android – 设置子视图的中心重力在水平布局中更改另一个子视图的布局对齐?

在我的水平LinearLayout中,我将一个视图中的重力设置为center_vertical,然后我尝试为第二个视图设置layout_gravity,但该视图与第一个视图中的居中文本对齐!

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
    <TextView
        android:layout_width="100dp"
        android:layout_height="200dp"
        android:layout_gravity="top"
        android:background="@drawable/border"
        android:gravity="center_vertical"
        android:text="layout_gravity=top   gravity=center_vertical" >
    </TextView>            
    <TextView
        android:layout_width="100dp"
        android:layout_height="200dp"
        android:layout_gravity="top"
        android:background="@drawable/border"
        android:gravity="top"
        android:text="layout_gravity=top  gravity=top" >
    </TextView>
</LinearLayout>

这是相同的代码,但垂直布局.请注意,所需行为在垂直布局中正常工作.

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:layout_gravity="left"
        android:background="@drawable/border"
        android:gravity="center_horizontal"
        android:text="layout_gravity=left   gravity=center_horizontal" >
    </TextView>            
    <TextView
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:layout_gravity="right"
        android:background="@drawable/border"
        android:gravity="right"
        android:text="layout_gravity=right  gravity=right" >
    </TextView>
</LinearLayout>

我可以使用RelativeLayout或者另一个嵌套的LinearLayout来解决问题.但是我问这个问题因为我想知道我是否不理解引力和layout_gravity是如何工作的!我理解这些基本属性是如何工作对我很重要.谢谢

最佳答案
如果您想要一个居中,一个顶部,那么您需要将一个基线对齐标志添加到LinearLayout

android:baselineAligned="false"

布局默认为对齐子项的基线.当孩子们使用不同的重力值时,这可能会导致这样的问题.

与垂直的区别在于基线不能在水平方向上对齐.

看到:

http://developer.android.com/reference/android/widget/LinearLayout.html#attr_android:baselineAligned

其他信息 – 这似乎比我能更好地解释这个问题:

http://www.doubleencore.com/2013/10/shifty-baseline-alignment/

转载注明原文:android – 设置子视图的中心重力在水平布局中更改另一个子视图的布局对齐? - 代码日志