如何验证按钮点击监听器的视图可见性

how to validate view visibility on button click listener

我正在使用此代码进行验证,但只有隐形视图有效。

mute.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mute = (ImageButton) findViewById(R.id.mute);
        if (mute.getVisibility() != View.INVISIBLE) {
            power.setVisibility(View.INVISIBLE);
        } else {
            power.setVisibility(View.GONE);
        }
    }
});

使用这个就可以了.....在 class 但在方法之外创建布尔变量作为全局变量。

 boolean flag=true;

并添加这个点击方法。

  @Override
            public void onClick(View v) {


if (flag){
            power.setVisibility(View.GONE);
            flag=false;
        }
        else {
            flag=true;
           power.setVisibility(View.VISIBLE);}

    }


        });

mute always visible ,因为你执行可见性的能力,所以结果是一样的。

享受编码....

它没有改变的原因是 View.GONEView.INVISIBLE 具有相同的行为,即隐藏元素。要显示元素,您应该使用 View.VISIBLE .

另一个提示:将mute变量设为全局变量并使用isShown方法。永远记住,在 onCreate 方法上初始化你的变量与在 onClick 方法上初始化它一样,它的性能是不同的。

Imageview mute;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mute = (ImageButton) findViewById(R.id.mute);
    mute.setOnClickListener(this);
}


@Override
public void onClick(View v) {
    if (mute.isShown())
        power.setVisibility(View.INVISIBLE);
    else
        power.setVisibility(View.VISIBLE);
    }
});

View.INVISIBLEView.GONE 具有相同的效果,您的视图将不可见。

唯一的区别是使用 INVISIBLE 视图仍会占用 space 用于布局目的,而使用 GONE 视图将占用任何 space。

你应该使用View.VISIBLE

public void onClick(View v) {
    mute = (ImageButton) findViewById(R.id.mute);
    if (mute.isShown())
        power.setVisibility(View.GONE);
    else
        power.setVisibility(View.VISIBLE);
}

这样试试,

if (mute.getVisibility() != View.INVISIBLE)
       power.setVisibility(View.INVISIBLE);
else
       power.setVisibility(View.VISIBLE);

这是一个简单的解决方案,希望对您有所帮助。

if (yoursecondLayout.getVisibility() == View.GONE) {

        yourfirstlayout.setVisibility(View.GONE);
        yoursecondLayout.setVisibility(View.VISIBLE);

    } else {

        yourfirstlayout.setVisibility(View.VISIBLE);
        yoursecondLayout.setVisibility(View.GONE);

    }