android:gravity="top" 不将子视图对齐到顶部,但“中心”对齐到中心?
Posted
技术标签:
【中文标题】android:gravity="top" 不将子视图对齐到顶部,但“中心”对齐到中心?【英文标题】:android:gravity="top" doesn't align child view to top, but "center" aligns to center? 【发布时间】:2013-05-30 05:23:59 【问题描述】:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical" >
<LinearLayout
android:layout_
android:layout_
android:layout_gravity="center"
android:gravity="top" <!--this line-->
android:orientation="horizontal" >
<TextView
android:layout_
android:layout_
android:text="0"
android:textSize="56dp" />
<TextView
android:layout_
android:layout_
android:text="0"
android:textSize="36dp" />
</LinearLayout>
难道不应该让较小的“0”t-view 对齐到内部 LinearLayout 的顶部吗? 由于另一个“0”的高度较大,因此增加了内部LinearLayout的整体高度。
或者,如果您包含以下内容:
android:layout_gravity="top"
在较小的 0 的 t 视图内,它也什么也不做。 为什么是这样? LinearLayout 的 wrap_content 是否独立于其他视图包装每个单独的视图? 如果是这样,那么为什么将重力设置为“中心”有效?从某种意义上说,较小的零垂直居中于其父级。
我知道您可以设置较小的 0 的高度以匹配父级并将其自身的重力设置为顶部。我只是想理解这一点。谢谢。
【问题讨论】:
【参考方案1】:布局的默认行为是对齐文本的基线,英文是在视图的底部。将android:baselineAligned="false"
添加到您的LinearLayout 将在视图顶部对齐第二个TextView。
【讨论】:
【参考方案2】:gravity
属性适用于 LinearLayout
内的小部件,而 layout_gravity
告诉 LinearLayout
的父级将子级 (LinearLayout
) 放在哪里。
此外,在垂直 LinearLayout
中,gravity="top"
属性将不起作用。
在您现在拥有的布局中,两个文本视图将一个在另一个之上堆叠,并用线性布局包裹,中间没有空格 - 因此“顶部”或“中心”值不会做任何事情因为没有额外的空间来向上或向下移动文本视图。
如果您想更好地理解这一点,请尝试为您的线性布局和两个文本视图设置不同颜色的背景,如下所示:
android:background="@color/mycolor"
然后你会看到每个小部件的边界。
【讨论】:
android:orientation="horizontal"
会将TextView
s 彼此相邻放置。【参考方案3】:
您可以使用android:layout_weight="10"
并分发到其他组件。
【讨论】:
以上是关于android:gravity="top" 不将子视图对齐到顶部,但“中心”对齐到中心?的主要内容,如果未能解决你的问题,请参考以下文章
android studio gravity怎么添加两个属性
android:gravity="center" 不适用于大字体的三星