我有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
'填充空格',尽管它没有任何文字)
而我想要的是:
实际上是从布局中删除tv2
后会发生的事情。
顺便说一句,
我想避免使用visibility
属性,我知道我可以设置为GONE
答案 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>