关于setClickable失效问题

本文探讨了Android中setClickable属性失效的原因及解决方法。当setClickable设置为false时,按钮仍能被点击的问题源于该方法调用时机不当。正确做法是在设置OnClickListener之后再调用setClickable。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天遇到了这个问题,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之后。就可以了解决此问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值