我无法弄清楚为什么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>
答案 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
将所有视图堆叠在线性布局的顶部,中心或底部。