如何验证按钮单击侦听器上的视图可见性
Posted
技术标签:
【中文标题】如何验证按钮单击侦听器上的视图可见性【英文标题】:how to validate view visibility on button click listener 【发布时间】:2016-08-21 08:38:33 【问题描述】:我正在使用此代码进行验证,只有隐形视图有效。
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);
);
【问题讨论】:
你是否知道View.VISIBLE
在android中有什么东西?
GONE 和 INVISIBLE 在某种意义上都意味着不可见,我猜你的意思是 VISIBLE
为什么要检查mute
的可见性?它的可见性可能保持不变,因此您不会更改 onClickListener 中的任何内容。
【参考方案1】:
使用它可以工作.....在类内但在方法外创建布尔变量作为全局变量。
boolean flag=true;
并添加这个点击的方法。
@Override
public void onClick(View v)
if (flag)
power.setVisibility(View.GONE);
flag=false;
else
flag=true;
power.setVisibility(View.VISIBLE);
);
静音总是可见的,因为你以强大的力量执行可见性,结果是一样的。
享受编码......
【讨论】:
我是这样检查的,但它只执行不可见性,但我希望在同一个按钮单击时两者都需要另一个条件语句吗? 还要检查你的 xml。第一次确保可见性为真。 @Arman 请查看它正在运行的编辑答案。我查过了。【参考方案2】:这是一个简单的解决方案,希望对您有所帮助。
if (yoursecondLayout.getVisibility() == View.GONE)
yourfirstlayout.setVisibility(View.GONE);
yoursecondLayout.setVisibility(View.VISIBLE);
else
yourfirstlayout.setVisibility(View.VISIBLE);
yoursecondLayout.setVisibility(View.GONE);
【讨论】:
【参考方案3】:这样试试,
if (mute.getVisibility() != View.INVISIBLE)
power.setVisibility(View.INVISIBLE);
else
power.setVisibility(View.VISIBLE);
【讨论】:
【参考方案4】:它没有改变的原因是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);
);
【讨论】:
【参考方案5】:View.INVISIBLE
和View.GONE
具有相同的效果,您的视图将不可见。
唯一的区别是,使用INVISIBLE
视图仍会占用空间用于布局目的,而使用GONE
视图将占用任何空间。
你应该使用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);
【讨论】:
以上是关于如何验证按钮单击侦听器上的视图可见性的主要内容,如果未能解决你的问题,请参考以下文章
如何在不向它们提供 ID 的情况下更改按钮单击时 textview 的可见性?