我有以下布局
<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 布局,但它不起作用。
当我从 ll_sub
的 xml 中设置 android:visibility="gone"
(我也用 invisible
检查过)然后它不显示在屏幕上,这次当我使用 setVisibility()
在运行时显示此布局时,它会显示,但是当我尝试隐藏此布局时,一旦它显示出来,它就不会隐藏。
编辑
我试图通过点击一个按钮来显示/隐藏这个线性布局。
LinearLayout ll;
Button minimize;
int visibility=0;
@Override
public void onCreate(Bundle savedInstanceState)
{
ll=(LinearLayout)findViewById(R.id.ll_sub);
minimize=(Button)findViewById(R.id.minimize);
minimize.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
if(visibility==0)
{
visibility=2;
}
else
{
visibility=0;
}
ll.setVisibility(visibility);
}
});
}
最佳答案
看来您为更改 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);
不要忘记在 View 上调用 invalidate()
:)
关于android - 在 Android 运行时隐藏线性布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5644539/