SetVisibility 不适用于 ImageButton

2 android visibility imagebutton

因此,我一直在论坛中寻找如何做到这一点,但我发现没有任何效果。当我在图像按钮上调用 setVisibility() 时,该按钮不受影响。下面是 onCreate 方法中的代码,当我运行应用程序时,两个按钮都会显示。但是,如果我将属性硬编码到 xml 文件中,可见性就会发生变化。有什么想法为什么会发生这种情况吗?

super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    btn1 = new ImageButton(this);
    btn1.setVisibility(GONE);
    btn2 = new ImageButton(this);
    btn2.setVisibility(GONE);
Run Code Online (Sandbox Code Playgroud)

xtr*_*xtr 5

将您的代码更改为:

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn1 = (ImageButton)findViewById(R.id.btn1);
btn1.setVisibility(View.GONE);
btn2 = (ImageButton)findViewById(R.id.btn2);
btn2.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)

并修改你的main.xml:

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:gravity="center_horizontal"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:orientation="vertical"
                  >
        <Button android:id="@+id/btn1" android:layout_width="100dip" 
            android:layout_height="40dip" android:text="btn1"/>       
        <Button android:id="@+id/btn2" android:layout_width="100dip" 
            android:layout_height="40dip" android:text="btn2"/>

    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)