在Android中隐藏运行时的线性布局

时间:2011-04-13 04:49:03

标签: android android-layout

我有以下布局

<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()

2 个答案:

答案 0 :(得分:16)

看起来您正在设置更改view visibility的错误常量。

GONE == 8
INVISIBLE == 4
VISIBLE == 0

但是,您永远不应该依赖Android 发生的实际值来指定它们的常量。而是使用View类中定义的值:View.VISIBLEView.INVISIBLEView.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

并使您的视图无效