layout_gravity =" center_vertical"不工作

时间:2018-02-18 04:29:39

标签: android

我的问题

我无法弄清楚为什么android:layout_gravity="center_vertical"在我的情况下不起作用。

请注意,我对解决垂直对齐的问题不感兴趣,以至于我试图通过教学原因确切了解这种行为本身的原因是什么。 < / p>

我的代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.LinearLayoutCompat
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"

    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/blue_100">

    <android.support.v7.widget.AppCompatTextView
        android:background="@color/red_100"

        android:text="HELLO WORLD"
        android:textSize="18sp"
        android:textColor="@color/black"

        android:gravity="center_vertical"
        android:maxLines="2"

        android:layout_gravity="center_vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</android.support.v7.widget.LinearLayoutCompat>

enter image description here

1 个答案:

答案 0 :(得分:2)

LinearLayout方向的vertical会忽略任何子级android:layout_gravity属性的垂直组件。同样,具有LinearLayout方向的horizontal会忽略子项android:layout_gravity水平分量

对于center重力值的特殊情况,知道它的行为与center_horizontal|center_vertical相同,直到常量的实际整数值(0x11 vs 0x01 | 0x10)是有帮助的。因此,在垂直线性布局中使用android:layout_gravity="center"将仅相当于android:layout_gravity="center_horizontal"

至于为什么,请考虑一下:

<LinearLayout orientation=vertical>

    <View layout_gravity=top/>
    <View layout_gravity=bottom/>

</LinearLayout>

你会在这做什么?如果您将第一个视图放在屏幕顶部而第二个视图放在屏幕底部,那么您实际上并不是线性布局。

即使你说你对如何解决问题不感兴趣,你也可以使用android:gravity本身的LinearLayout属性。这将导致LinearLayout将所有视图堆叠在线性布局的顶部,中心或底部。