1

我在 LinearLayout 中有一些垂直方向的元素

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:orientation="vertical" >

    <TextView
            ... />

    <Button
            ... />
</LinearLayout>

这些元素不会占用应用程序的整个垂直空间,我希望它们垂直居中。我该怎么做呢?

4

3 回答 3

2

试试这种方式:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:orientation="vertical" >    
<TextView
    android:id="@+id/title"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="lhkabhfksbj" />    
</LinearLayout>

只需将视图的重力设置为 "center" 。我想这就是你想要的。

于 2012-12-23T09:41:57.027 回答
2

Layout_gravity="center_vertical" 不适用于垂直 LinearLayout。

我会说你可以设置android:layout_height="match_parent"android:gravity="center_vertical"线性布局。

于 2012-12-23T08:22:35.167 回答
1

属性android:layout_gravity相对于其父视图定位视图,这意味着它们的封闭布局。在您的情况下,问题是您没有封闭布局。我知道,这很令人困惑,因为人们可能认为 LinearLayout 会在根窗口中居中,但即使涉及基本上引用其父级的属性,例如“ android:layout_centerInParent ”,它们也总是引用其封闭布局(“父级” )。顺便说一句,“LinearLayout”不支持这些属性。

我的想法来解决你的问题:

解决方案 1:将您的 LinearLayout 放在封闭布局中:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

     <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Textbox1"  />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Textbox2"  />     

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button1" />

    </LinearLayout>

</FrameLayout>

解决方案 2:让包含的视图自行对齐

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textview_1"
        android:layout_centerVertical="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="Textbox1" />

    <TextView
        android:id="@+id/textview_2"
        android:layout_below="@id/textview_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="Textbox2" />      

    <Button
        android:layout_below="@id/textview_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button1" />

</RelativeLayout>

希望有帮助!

于 2012-12-23T11:08:48.293 回答