LinearLayout可见性已消失

时间:2014-02-03 17:25:50

标签: android xml android-layout

好吧,我的Android布局遇到了一个奇怪的问题。我的xml布局定义中有两个LinearLayouts。我想要做的是在程序开始时隐藏它们,然后在运行时动态设置它们的可见性,一次只显示一个。

这是我的xml布局:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical" >
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="2dip"
    android:background="@android:color/white"
    android:orientation="vertical"
    android:padding="2dip"
    android:paddingBottom="2dip" >
    <!-- Unimportant stuff -->
  </LinearLayout>    
<LinearLayout
    android:id="@+id/results1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="2dip"
    android:background="@android:color/white"
    android:orientation="vertical"
    android:visibility="gone" >
    <SegmentedRadioGroup
        android:id="@+id/segment_sort"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:checkedButton="@+id/button_one"
        android:orientation="horizontal" >
        <RadioButton
            android:id="@+id/button_one"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:minHeight="33dip"
            android:text="@string/sort_first"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="@color/radio_colors" />
        <RadioButton
            android:id="@+id/button_two"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:minHeight="33dip"
            android:text="@string/sort_second"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="@color/radio_colors" />
        <RadioButton
            android:id="@+id/button_three"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:minHeight="33dip"
            android:text="@string/sort_third"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="@color/radio_colors" />
    </SegmentedRadioGroup>

    <ListView
        android:id="@+id/listview1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

<LinearLayout
    android:id="@+id/results2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="2dip"
    android:background="@android:color/white"
    android:orientation="vertical"
    android:visibility="gone" >

    <SegmentedRadioGroup
        android:id="@+id/segment_sort2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:checkedButton="@+id/button_one2"
        android:orientation="horizontal" >
        <RadioButton
            android:id="@+id/button_one2"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:minHeight="33dip"
            android:text="@string/sort_first"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="@color/radio_colors" />
        <RadioButton
            android:id="@+id/button_two2"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:minHeight="33dip"
            android:text="@string/sort_second"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="@color/radio_colors" />
        <RadioButton
            android:id="@+id/button_three2"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:minHeight="33dip"
            android:text="@string/sort_third"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="@color/radio_colors" />
    </SegmentedRadioGroup>
     <ListView
        android:id="@+id/listview2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/btBottom" />
   </LinearLayout>
</LinearLayout>

现在,我遇到的问题是即使两种可见性都已“消失”, 第二个LinearLayout,results2,始终显示在程序启动时。动态显示和隐藏工作正常。

谢谢!

3 个答案:

答案 0 :(得分:1)

在可见性标记附近的布局result2上有一个拼写错误:

android:orientation="vertical"enter code here
    android:visibility="gone" >

“在此处输入代码”可能会阻止重新编译布局,并且您可能正在使用一个没有visibility =“gone”set的旧版本

答案 1 :(得分:0)

即使你没有粘贴你的类代码,我想,这是因为你已经为你的R.id.result2设置了setContentView方法。您无法将可见性GONE设置为contentView,或者使用起来不太舒服..

这实际上取决于您对布局的实际需求,但我认为有更好的方法可以实现这一目标

接下来,如果您将可见性设置为GONE,则无法再次显示布局。更好的方法是将可见性设置为INVISIBLE,当您想要再次显示它时,只需将可见性设置为VISIBLE即可。当您调用GONE时,视图将不再可见。

是的,在你的课堂上设置它比在xml中更舒服。

答案 2 :(得分:-2)

设置LinearLayout1.VISIBLE(View.INVISIBLE) 在你的班级隐藏和  LinearLayout1.VISIBLE(View.VISIBLE)