Lou*_*rda 5 android gravity android-linearlayout layout-gravity
在我的水平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>
Run Code Online (Sandbox Code Playgroud)

这是相同的代码,但垂直布局. 请注意,所需行为在垂直布局中正常工作.
<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>
Run Code Online (Sandbox Code Playgroud)

我可以使用RelativeLayout或者另一个嵌套的LinearLayout来解决问题.但是我问这个问题因为我想知道我是否不理解引力和layout_gravity是如何工作的!我理解这些基本属性是如何工作对我很重要.谢谢
如果您想要一个居中,一个顶部,那么您需要将一个基线对齐标志添加到LinearLayout
android:baselineAligned="false"
Run Code Online (Sandbox Code Playgroud)
布局默认为对齐子项的基线.当孩子们使用不同的重力值时,这可能会导致这样的问题.
与垂直的区别在于基线不能在水平方向上对齐.
看到:
http://developer.android.com/reference/android/widget/LinearLayout.html#attr_android:baselineAligned
其他信息 - 这似乎比我能更好地解释这个问题:
http://www.doubleencore.com/2013/10/shifty-baseline-alignment/
| 归档时间: |
|
| 查看次数: |
2363 次 |
| 最近记录: |