关于setClickable失效问题

Posted Flyzend

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于setClickable失效问题相关的知识,希望对你有一定的参考价值。

今天遇到了这个问题,setClickable失效。button设置了setClickable为false 依然可以点击。


最后发现是代码里面设置setClickable属性需要在设置在setonclickLinsetenr之后。


下面是View.class 的setOnClickListener的部分源码。


/**
* Register a callback to be invoked when this view is clicked. If this view is not
* clickable, it becomes clickable.
*
* @param l The callback that will run
*
* @see #setClickable(boolean)
*/
public void setOnClickListener(OnClickListener l) 
if (!isClickable()) 
setClickable(true);

getListenerInfo().mOnClickListener = l;



查看了源码不难发现原因,如果你设置在监听事件之前,那么监听事件会覆盖你的setClickable的操作。所以导致失效


所以如果需要设置按钮默认无法点击,则需要将setClickable的代码设置在setOnclickLinsetner之后。就可以了解决此问题。

以上是关于关于setClickable失效问题的主要内容,如果未能解决你的问题,请参考以下文章

setEnabled() 与 setClickable() 有啥区别?

Button.setClickable(false)无效

setEnabled() 和 setClickable() 的区别

关于dockpanel隐藏,显示时某些功能失效的问题?

关于验证码的首次加载失效问题

关于设置百分比宽高失效的问题