我想创建一个动态水平布局,它有3个视图,在屏幕上占用相同的空间。当隐藏1个视图时,剩余的视图应填满其空间。
我正在尝试使用xml来实现这一点,而不是考虑为它编写一些代码。
我可以通过使用LinearLayout
和权重来获得3个视图以占用相等的空间来填充屏幕,但是如果隐藏了一些视图,则无法使视图填充空间。
我的布局看起来像这样。
<LinearLayout
android:layout_width="match_parent"
android:weightSum="3"
android:layout_height="wrap_content">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="This is bob" />
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="This is bob" />
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="This is bob" />
</LinearLayout>
我认为必须已经有人问过,但我无法找到任何相关问题。
答案 0 :(得分:2)
添加
android:orientation="horizontal"
并删除
android:weightSum="3"
从主布局它将起作用。
你的布局应该是这样的:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="This is bob" />
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="This is bob" />
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="This is bob" />
</LinearLayout>
答案 1 :(得分:0)
当视图的可见性设置为GONE时,使用数据绑定更改容器中的android:weightSum属性。见文档:https://developer.android.com/topic/libraries/data-binding/index.html。 无论如何,你必须创建一个模型对象。