我似乎无法弄清楚为什么android:layout_gravity="center_vertical"在我的情况下不起作用。
请注意,我对解决使其垂直对齐的问题不感兴趣,以至于出于教学原因,我试图确切地了解这种行为本身的原因是什么。
<?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>
Run Code Online (Sandbox Code Playgroud)
一个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>
Run Code Online (Sandbox Code Playgroud)
你会在这里做什么?如果您将第一个视图放置在屏幕顶部,将第二个视图放置在屏幕底部,那么您就不是真正的线性布局。
即使你说你对如何解决问题不感兴趣,你也可以通过android:gravity属性LinearLayout本身来解决。这将导致LinearLayout在线性布局的顶部、中心或底部将所有视图堆叠在一起。
| 归档时间: |
|
| 查看次数: |
1700 次 |
| 最近记录: |