Android:创建动态布局

时间:2016-11-23 13:26:08

标签: android android-layout

我想创建一个动态水平布局,它有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>

我认为必须已经有人问过,但我无法找到任何相关问题。

2 个答案:

答案 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。 无论如何,你必须创建一个模型对象。