6

为什么这不会使视图中的内容居中?

<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 线程,我也看到了这个,但我只有一个水平的 LinearLayout,所以设置重力会左右调整视图。

由于 LinearLayout 具有父级的尺寸,它不会填满整个屏幕吗?

不应该android:layout_gravity="center_vertical"在其尺寸的中心(垂直)对齐它的子视图吗?

在我完成的编码中,这对我来说是有意义的,那么为什么 android 没有意义呢?

我是否需要另一个垂直的 LinearLayout 来容纳其中的所有其他内容并与android:layout_gravity="center_vertical"?

4

2 回答 2

11

layout_gravity
孩子可以提供给其父母的标准重力常数。

gravity
指定如何在对象本身内放置对象的内容,包括 x 轴和 y 轴。

因此,如果您希望您的内容垂直居中,则gravity不需要layout_gravity.

于 2013-01-04T21:08:46.080 回答
3

而不是使用android:layout_gravity="center_vertical",请使用android:gravity="center_vertical",它会工作...... :)

于 2013-01-04T21:08:55.200 回答