2

我正在测试LinearLayout并创建一个LinearLayout2 TextViews。具有LinearLayout属性gravity="center_vertical",并且具有属性TextView中的第一个。LinearLayoutlayout_gravity="top"

gravity="center_vertical"ofLinearLayout将其内容垂直居中。

layout_gravity="top"ofTextView告诉它的容器把我放在上面。

那么如果他们在一起会发生什么呢?

在我的实验中,'layout_gravity="top"' 不起作用。

以下是我的代码和结果:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:text="textview 1"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="textview 2"/>

</LinearLayout>

我的结果

4

2 回答 2

0

Jay Bryant Casilang 的说法有些正确。这是因为父母的重力。但还有更多。也是因为它是一个LinearLayout

https://developer.android.com/guide/topics/ui/layout/linear.html

ALinearLayout设计用于视图彼此“相邻”,无论是垂直还是水平。因为您设置android:gravity="center_vertical"在 theLinearLayoutandroid:layout_gravity="top"first 上TextView,所以您希望看到的是:

在此处输入图像描述

但是,这意味着两个布局之间会有间距。“未计入”的间距(无边距、无填充等)。

这在LinearLayout.

的所有孩子都LinearLayout必须以某种方式彼此相邻(以线性方式,明白吗?)

顺便说一句,我达到了这样的顶峰:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="textview 1"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:text="textview 2"/>

</RelativeLayout>

希望这很清楚。

于 2016-11-04T04:39:02.313 回答
0

最有可能的是,父元素的重力是第一个被执行的。您看不到 layout_gravity top 的效果,因为它遵循重力设置为其父元素。如果您不希望第一个 textview 出现在中间,则不应将重力 center_vertical 设置为 linearlayout。

于 2016-11-04T03:58:18.733 回答