为什么这不会使视图中的内容居中?
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_gravity="center_vertical"
tools:context=".MainActivity">
<EditText
android:id="@+id/messageTextField"
android:layout_weight="1"
android:inputType="number"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/messageTextFieldPlaceholder"
/>
<Button
android:id="@+id/sendButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sendButtonTitle"
android:onClick="sendMessage"
/>
</LinearLayout>
我看到一些关于垂直对齐的SO线程,我也看到了this,但我只有一个水平的LinearLayout,所以设置引力会从一侧到另一侧调整视图。
由于LinearLayout具有父级的维度,它是否不会填满整个屏幕?
不应该android:layout_gravity="center_vertical"
将它的子视图与其尺寸的中心(垂直)对齐吗?
这对我来说对我所做的编码有意义,那为什么android没有意义呢?
我是否需要另一个垂直的LinearLayout来保存其中的所有其他内容,并将其与android:layout_gravity="center_vertical"
一起使用?
答案 0 :(得分:9)
<强> layout_gravity
强>
儿童可以提供的标准重力常数
它的父母。
<强> gravity
强>
指定如何放置对象的内容
在x轴和y轴上,在对象本身内。
因此,如果您希望内容垂直居中,则需要gravity
而不是layout_gravity
。
答案 1 :(得分:1)
请使用android:layout_gravity="center_vertical"
,而不是使用android:gravity="center_vertical"
,它会起作用...:)