Android如何使用自动布局在隐藏视图时移动其他视图?

时间:2014-03-13 04:47:49

标签: android xml view hidden

当隐藏其中一个时,我想制作可调整大小的视图。以下link已经向iOS提出了问题。我想为Android做它。任何帮助表示赞赏。我想在设置可见性隐藏到计数和折扣之后为三个TextViev添加可用空间:position,stat_name,price

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="1dp"
    android:gravity="center"
    android:orientation="horizontal"
    android:paddingBottom="10dp"
    android:paddingLeft="5dp"
    android:paddingTop="30dp"
    android:weightSum="100" >

    <TextView
        style="@style/list_titles_style"
        android:layout_weight="10"
        android:text="@string/position" />

    <TextView
        style="@style/list_titles_style"
        android:layout_weight="35"
        android:paddingLeft="15dp"
        android:text="@string/stat_name" />

    <TextView
        style="@style/list_titles_style"
        android:layout_weight="20"
        android:text="@string/price" />

    <TextView
        android:id="@+id/count_label"
        style="@style/list_titles_style"
        android:layout_weight="10"
        android:visibility="invisible"
        android:text="@string/count" />

    <TextView
        android:id="@+id/discount_label"
        style="@style/list_titles_style"
        android:visibility="invisible"
        android:layout_weight="25"
        android:text="@string/discount" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="2dp"
    android:layout_marginLeft="2dp"
    android:layout_marginRight="2dp"
    android:layout_marginTop="1dp"
    android:background="@drawable/border_layout"
    android:orientation="horizontal" >

    <ListView
        android:id="@+id/stats_listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        android:layout_marginBottom="5dp"
        android:divider="@drawable/list_divider"
        android:dividerHeight="2dp"
        android:paddingBottom="0dp"
        android:paddingLeft="10dp"
        android:paddingTop="0dp" />
</LinearLayout>

我的风格是:

<style name="list_titles_style">
    <item name="android:layout_width">0dp</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:textColor">@color/Blue</item>
    <item name="android:gravity">center</item>
    <item name="android:textSize">18sp</item>
</style>

2 个答案:

答案 0 :(得分:3)

我已经浏览了提供的链接...要删除左侧视图,只需在xml布局文件中为视图设置android:visibility="gone" ....如果要以编程方式删除,请尝试view.setVisibility(View.GONE); ....

答案 1 :(得分:2)

你可以使用带有match_parent参数的LinearLayout来实现这一点,具体取决于你想要的方向。因此,您可以为每个子视图设置权​​重,还可以设置存根视图以扩展大小。

请注意,如果您使用INVISIBLE标记隐藏视图,它们将保留空间,而使用GONE时,它就像视图从未出现过那样。

希望有所帮助。