2013-01-04 56 views
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线程,我也看到了this,但我只有一个水平的LinearLayout,因此设置重力将调整从侧面视图到另一边。

由于LinearLayout具有父级的维度,它是否不填满整个屏幕?

不应该android:layout_gravity="center_vertical"调整它的维度中心(垂直)的子视图吗?

这对我来说对我来说是有意义的,因为我已经完成了编码,那为什么android没有意义?

我是否需要另一个垂直的LinearLayout,它包含其中的所有其他内容,并使用android:layout_gravity="center_vertical"

回答

9

layout_gravity
标准重力常数,一个孩子可以提供给 其父。

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

所以,如果你想让你的内容垂直居中,你需要gravity而不是layout_gravity

+0

好。因此,layout_gravity是用于内容的,因为它会传达给它的布局,重力会影响布局,因为它会调整它的内容,对吧? – RileyE

+0

是的。 'layout_gravity' - >孩子到父母,'重力' - >父母给孩子。 – Ahmad

+1

太好了。谢谢! – RileyE

1

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

+0

谢谢你的帮助。不过,我不得不与艾哈迈德一起解释。 – RileyE