转载:https://blog.csdn.net/u011630575/article/details/50113927

android:clickable属性

在android Button的xml文件属性中有这麽一个属性标签:

android:clickable  

该标签(继承自View的xml属性)的值必须是boolean值,即true、false。该标签目的是设置button是否可以被点击。

于是,我Demo一把,xml文件如下:

    

不好意思,运行之后,该Button一如既往的好使,并没有“不可点击”。搞不明白、、、、

在 android 中几乎每一个xml属性,对应的都有一个方法,于是我改用下面的方法:

setClickable();  

心里想,这次应该可以了,示意代码:

btn_to.setClickable(false);  btn_to.setOnClickListener(new Button.OnClickListener() {        @Override      public void onClick(View v) {        // to do        }  });  

再次运行,还是不行!没办法,看源码吧!

我们知道,点击 button 会触发下面的源码(View.java):

public void setOnClickListener(OnClickListener l) {          if (!isClickable()) {              setClickable(true);          }          mOnClickListener = l;      }  

呵呵,你会明白,只要点击button都会将setClickable设置为true,所以在setOnClickListener之前setClickable设置为false只不过是多此一举!

那么,解决办法就出来了,调换一下代码的位置即可:

btn_to.setOnClickListener(new Button.OnClickListener() {        @Override      public void onClick(View v) {          // to do      }  });            btn_to.setClickable(false);  

这样,你再次点击button试一试,呵呵,它无动于衷了吧!

yes,搞定!

android:onClick属性

布局文件中的控件有一个属性,是onClick,例如:

然后在相应的Activity中实现onButtonClick方法,就可以实现Button绑定点击监听事件,非常简单方便。
  

但是,在TextView中,这个设置无效:

解决办法,添加android:clickable="true"

不同的控件默认的android:clickable属性值是不同的,所以,在设置Button以外的View的android:onClick="onButtonClick"时,最好,加上android:clickable="true"。

更多相关文章

  1. greendao3.2.0使用方法(超详细)
  2. RN调用Java原生方法步骤
  3. Android Activity之间跳转出现短暂黑屏的处理方法
  4. Android相对属性布局总结
  5. android android:windowSoftInputMode相关属性
  6. Android 属性系统设计分析
  7. Android 设备root 原理及方法
  8. Android多进程app中Application回调onCreate()方法被执行多次分

随机推荐

  1. Android圆角bug
  2. Android(安卓)之 使用嵌入式关系型SQLite
  3. Android(安卓)系统启动
  4. Android(安卓)对话框(Dialog)大全 建立你
  5. Android开发指南-框架主题-基础知识
  6. android消息推送方案
  7. [置顶] Android系统下的动态Dex加载
  8. Android:实现一个轮播图(Banner)
  9. Android打开并浏览 Office PDF 等文件
  10. Android大图片裁剪终极解决方案(上:原理分