android - 在 Android 运行时隐藏线性布局

标签 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 布局,但它不起作用。

当我从 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.VISIBLEView.INVISIBLEView.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/

相关文章:

android - 数据绑定(bind): how to bind different data variables in one view

android - leftDrawable 和 rightDrawable 的单选按钮空间

安卓 : LinearLayout with 2 buttons at the bottom

java - ServerValue.TIMESTAMP 在 Firebase 中保存和检索时间戳

java - android中java.lang.OutOfMemoryError的主要原因是什么

java - 为什么我在设计查看器中的字体在 Android Studio 中是模糊的?

android - 如何缩放 View 以适应 Android 动画中的内容大小?

java - Android Studio gradle 构建失败 : could not find bundletools. jar(com.android.tools.build:bundletools:010-alpha01)

Android 位置管理器,获取 GPS 位置,如果没有 GPS 则获取网络提供商位置

java - 如何将 Spinner 对象传递给 Android/Java 中的其他 Activity