好吧,我的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,始终显示在程序启动时。动态显示和隐藏工作正常。
谢谢!
答案 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)