如何验证按钮点击监听器的视图可见性
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.GONE
和 View.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.INVISIBLE
和 View.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);
}
我正在使用此代码进行验证,但只有隐形视图有效。
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.GONE
和 View.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.INVISIBLE
和 View.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);
}