垂直对齐重力无响应

时间:2013-01-04 20:58:09

标签: android xml layout

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

<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"一起使用?

2 个答案:

答案 0 :(得分:9)

<强> layout_gravity
儿童可以提供的标准重力常数 它的父母。

<强> gravity
指定如何放置对象的内容 在x轴和y轴上,在对象本身内。

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

答案 1 :(得分:1)

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