Android与重力的相对布局问题

Posted

技术标签:

【中文标题】Android与重力的相对布局问题【英文标题】:Android relative layout problem with gravity 【发布时间】:2011-02-17 18:21:44 【问题描述】:

如何将 id="naslov" 的 textview 放在中心?我也尝试过 layout_gravity="center" 但这也不起作用。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_>

<TextView   
    android:id="@+id/naslov"
    android:layout_
    android:layout_
    android:textSize="20dip"
    android:text="Povzetek"
    android:gravity="center"/>
   <TextView   
    android:id="@+id/aha"
    android:layout_
    android:layout_
    android:textSize="10dip"
    android:text="Vseh oddaj:"
       android:layout_below="@id/naslov"/>  
 </RelativeLayout> 

【问题讨论】:

属性重力在RelativeLayout中没有影响。 Android and Layouts 的可能重复项 【参考方案1】:
 android:layout_centerHorizontal="true"

【讨论】:

【参考方案2】:
 android:layout_centerHorizontal="true"

还有

android:layout_centerInParent="true"

RelativeLayout 属性的完整列表是here

您也可以告诉您的 TextView 填充父项,然后在其上设置重力=中心。所以它将在 textView 中居中实际文本。

【讨论】:

【参考方案3】:

补充答案

作为对这个问题的更一般的回答,layout_gravity 不适用于RelativeLayout 的子视图。它适用于LinearLayoutFrameLayout。但是,RelativeLayout 的子视图仍然可以照常使用gravity,因为这正是视图排列自己内容的方式。

请参阅下图中的比较。绿色和蓝色视图是 RelativeLayout 内的 TextView。

gravity 有效,但 layout_gravity 无效。详情请见my fuller answer。

另请参阅

Gravity and layout_gravity on Android Positioning views within a RelativeLayout

【讨论】:

【参考方案4】:

相对布局不使用 layout_gravity,但是您可以通过以下方式使用重力值:center、left、left|center、right|center、right、top、bottom。

<!-- below widget displaying text in left center -->
<TextView
           android:id="@+id/song_title"
           android:layout_
           android:layout_
           android:text="sample name text"
           android:gravity="left|center"
           android:textSize="15sp" />

【讨论】:

以上是关于Android与重力的相对布局问题的主要内容,如果未能解决你的问题,请参考以下文章

安卓的相对布局与线性布局

Android相对布局与按钮宽度使用权重

Android:如何将相对布局中的所有项目对齐到屏幕底部

Android之相对布局

自定义 Android 视图在线性和相对布局中显示不同

Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件