android中的gravity和layout_gravity的优先级是什么?

时间:2016-11-04 02:33:09

标签: android android-layout android-gravity

我正在测试LinearLayout并使用2 LinearLayout创建TextViewLinearLayout具有属性gravity="center_vertical"TextView中的第一个LinearLayout具有属性layout_gravity="top"

gravity="center_vertical"的{​​p> LinearLayout将其内容垂直放在中心位置。

layout_gravity="top"的{​​{1}}告诉其容器让我站在最顶层。

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

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

以下是我的代码和结果:

TextView

My result

2 个答案:

答案 0 :(得分:0)

最有可能的是,父元素的引力是第一个被执行的。您无法看到layout_gravity顶部的效果,因为它遵循设置为其父元素的重力。如果您不希望第一个文本视图出现在中间,则不应将gravity center_vertical设置为linearlayout。

答案 1 :(得分:0)

Jay Bryant Casilang有点正确。这是因为父母的引力。但还有更多。这也是因为它是LinearLayout

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

LinearLayout专为视图设置为“相邻”,可以是垂直或水平。因为您在第一个android:gravity="center_vertical"上的LinearLayoutandroid:layout_gravity="top"上设置了TextView,所以您希望看到的是:

enter image description here

然而,这意味着两个布局之间会有间距。 “无法计算”的间距(没有边距,没有填充等)。

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>

希望这很清楚。