Button.setClickable(false)无效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Button.setClickable(false)无效相关的知识,希望对你有一定的参考价值。
我已经在我的代码中设置了mButton.setClickable(false);
,但仍然是我的代码的全局button.setOnClickListener
调用此按钮。
编辑:抱歉延迟更新。以下是我遇到问题的详细信息视图。 在我的listview中的customAdapter类getView方法
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View row = convertView;
YourWrapper wrapper = null;
HashMap<String, Object> cTa= new HashMap<String, Object>();
cTa= d.getPosition(position)
Button mButton = (Button)convertView.findViewById(R.id.mBtn);
if (row == null)
{
row = inflater.inflate(R.layout.layout, parent, false);
wrapper = new YourWrapper (row);
row.setTag(wrapper);
}
else
wrapper = (YourWrapper) row.getTag();
if(success)
{
// section-1
mButton.setClickable(true);
}
else{
// section-2
mButton.setClickable(false);
mButton.setFocusable(false);
}
wrapper.getButton().setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
//operation
}
});
return row;
}
上面是当前正在运行的代码,在第2节它使mButton可单击 - 假,并且可聚焦 - 为false但仍然在监听下面的wrapper.getButton()。setOnClickListener()并执行操作。请建议我。抱歉延迟更新。谢谢!
更新:我现在做了以下解决问题的热门修复程序。
// section-2
mButton.setVisibility(View.GONE);
mButton.setClickable(false);
mButton.setFocusable(false);
这似乎是设计上的。这来自View.setOnClickListener 方法的文档:
注册单击此视图时要调用的回调。如果此视图不可单击,则它将变为可单击。
而不是使用setClickable(false)
使用setEnabled(false)
而不是使用setClickable(false)使用以下
button.setFocusableInTouchMode(false);
我在我的应用程序中遇到了同样的问题,我需要将按钮设置为在某些条件下不可点击。这对我有用。希望这可以帮助。
在View.setOnClickListener()
之前使用View.setClickable()
,或者setOnclickLisnter()
方法将标志设置为true。
您可以检查if(!view.isClickable())return;
这将适用于Imageview和按钮。
private OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
if (imageview.isEnabled()){
//I have wrapped all code inside onClick() in this if condition
//Your onClick() code will only execute if the imageview is enabled
//Now we can use setEnabled() instead of setClickable() everywhere
}}
};
在onCreate()
内,你可以做setEnabled(false)
,相当于setClickable(false)
。
我们可以使用setEnabled()
作为标记因为它的状态在调用click时不受影响(不像setClickable()
的状态改变)。
以上是关于Button.setClickable(false)无效的主要内容,如果未能解决你的问题,请参考以下文章
为啥 == false 评估为 false 而 [] == false 评估为 true?
为啥 false && (false)?false:true 返回 true
console.log(([])?true:false); console.log(([]==false?true:false)); console.log(({}==false)?true:fa
为啥“[False, True] 中的 not(True)”返回 False?
在js中,为啥!0是true,!!0是false,!1是false,!!1是true,!-1是false,!!-1是true