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

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

    <TextView
            ... />

    <Button
            ... />
</LinearLayout>


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

最佳答案

属性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>


希望有帮助!

08-04 02:14
查看更多