我有以下布局
<merge>
<LinearLayout
android:id="@+id/ll_main"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>
<LinearLayout
android:id="@+id/ll_sub"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>
</merge>
我想要做的是通过setVisibility()
在运行时显示/隐藏ll_sub布局,但它不起作用。
当我从android:visibility="gone"
的xml设置invisible
(我也使用ll_sub
检查过)时,它不显示在屏幕上,这次我使用{{1在运行时显示此布局,它会显示但是当我尝试隐藏此布局后,它会显示它然后它没有隐藏。
修改
我试图在点击按钮时显示/隐藏此线性布局。
setVisibility()
答案 0 :(得分:16)
看起来您正在设置更改view visibility的错误常量。
GONE == 8
INVISIBLE == 4
VISIBLE == 0
但是,您永远不应该依赖Android 发生的实际值来指定它们的常量。而是使用View类中定义的值:View.VISIBLE
,View.INVISIBLE
和View.GONE
。
// snip...
if(visibility == View.VISIBLE)
{
visibility = View.GONE;
}
else
{
visibility = View.VISIBLE;
}
ll.setVisibility(visibility);
不要忘记在视图上调用invalidate()
:)
答案 1 :(得分:2)
您应该使用View提供的常量
View.INVISBLE, View.VISIBLE, View.GONE
并使您的视图无效