Android-配置文件中设置“android:clickable="false"无效的原因及解决办法

一、前言:

1、开发中遇到的问题:要实现一个button初始为不可点击,于是在配置文件中设置了android:clickable="false"运行后发现还是可以点击,于是写在了Activity中:btn.setClickable(false);发现还是可以点击。

下面是onClick的源码:

 /**
     * 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(@Nullable OnClickListener l) {
        if (!isClickable()) {
            setClickable(true);
        }
        getListenerInfo().mOnClickListener = l;
    }
2、解决:

查看android setClickable源码 ,发现在源码的setOnClickListener事件会重写 事件会去重写View v,也就是会把setClickable设为true!

1、按扭的setOnClickListener事件之后,再设置btn.setClickable(false);
2、这样首次点击事件就没有效果了,如下方设置;

btn.setOnClickListener(this);
//设置两按扭为不可点击
btn.setClickable(false);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容