2
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="top"   <!--this line-->
    android:orientation="horizontal" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0"
        android:textSize="56dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0"
        android:textSize="36dp" />
</LinearLayout>

那不应该使较小的“0”t-view与内部LinearLayout的顶部对齐吗?由于另一个“0”的高度较大,因此增加了内部LinearLayout的整体高度。

或者,如果您包含以下内容:

android:layout_gravity="top"

在较小的 0 的 t 视图内,它也什么也不做。为什么是这样?LinearLayout 的 wrap_content 是否独立于其他视图包装每个单独的视图?如果是这样,那么为什么将重力设置为“中心”有效?从某种意义上说,较小的零垂直居中于其父级。

我知道您可以设置较小的 0 的高度以匹配父级并将其自身的重力设置为顶部。我只是想理解这一点。谢谢。

4

3 回答 3

4

布局的默认行为是对齐文本的基线,英文的基线位于视图的底部。添加android:baselineAligned="false"到您的 LinearLayout 将对齐视图顶部的第二个 TextView。

于 2018-02-22T21:32:16.570 回答
2

gravity属性适用于 中的小部件LinearLayout,同时layout_gravity告诉父级LinearLayout放置子级的位置 ( LinearLayout)。

此外,在垂直LinearLayout中,该gravity="top"属性将不起作用。

在您现在拥有的布局中,两个文本视图将一个在另一个之上堆叠,并用线性布局包裹,中间没有空格 - 所以“顶部”或“中心”值不会做任何事情,因为有没有额外的空间来向上或向下移动文本视图。

如果您想更好地理解这一点,请尝试为您的线性布局和两个文本视图提供不同颜色的背景,如下所示:

android:background="@color/mycolor"

然后您将看到每个小部件的边界。

于 2013-06-04T00:07:37.283 回答
0

您可以android:layout_weight="10"在其他组件上使用和分发。

于 2017-11-17T00:48:17.750 回答