垂直LinearLayout中的垂直中心视图,其中为'空'项目

时间:2014-11-24 21:36:02

标签: android android-layout textview

我有2个vertical个孩子的TextView线性布局 即使只有一个孩子填满了空间,我希望孩子们能够垂直居中。

这是一个测试布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:orientation="vertical"
    android:gravity="center_vertical|left"
    android:background="@color/light_gray" >
    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" 
        android:text="text text text" >
    </TextView>
    <TextView
        android:id="@+id/tv2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

设置tv2视图时(如图所示),tv1不会垂直居中 以下是它的外观:(请参阅tv2'填充空格',尽管它没有任何文字)

enter image description here

而我想要的是:

enter image description here

实际上是从布局中删除tv2后会发生的事情。

顺便说一句, 我想避免使用visibility属性,我知道我可以设置为GONE

1 个答案:

答案 0 :(得分:0)

我会在确保您正确执行此操作后立即将其删除,但仍然无效(基于评论),但我想仔细检查您实际上是否正确设置......

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:orientation="vertical"
    android:gravity="center"
    android:weightSum="2"
    android:background="@color/light_gray" >
    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:text="text text text" >
    </TextView>
    <TextView
        android:id="@+id/tv2"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center_vertical" />
</LinearLayout>

这应该是你的布局。你有这样的设置吗?

注意

您明确声明根LinearLayout高度为60dp。我不建议这样做,但如果你打算保持这种方式,你也可以简单地明确声明你的TextView高度,如

<TextView
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:gravity="center_vertical" />

请在检查后告知我,并确保此功能无效。

修改

无论TextViews中的实际内容如何,​​这都会将TextView放在布局的中间位置:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@color/light_gray" >

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_centerInParent="true" >

        <TextView
            android:id="@+id/tv1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content
            android:gravity="center_vertical"
            android:text="text text text" >
        </TextView>

        <TextView
            android:id="@+id/tv2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_vertical" />

    </LinearLayout>
</RelativeLayout>