android:clickable 问题

el/2024/7/24 1:06:22

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

[html]  view plain copy print ?
  1. android:clickable  
该标签(继承自View的xml属性)的值必须是boolean值,即true、false。该标签目的是设置button是否可以被点击。

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

[html]  view plain copy print ?
  1. <Button  
  2.     android:id="@+id/btn_to"  
  3.     android:clickable="false"  
  4.     android:layout_width="fill_parent"   
  5.     android:layout_height="wrap_content"   
  6.     android:text="to"  
  7.     />    
不好意思,运行之后,该Button一如既往的好使,并没有“不可点击”。搞不明白、、、、

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

[java]  view plain copy print ?
  1. setClickable();  
心里想,这次应该可以了,示意代码:

[java]  view plain copy print ?
  1. btn_to.setClickable(false);  
  2. btn_to.setOnClickListener(new Button.OnClickListener() {  
  3.   
  4.     @Override  
  5.     public void onClick(View v) {  
  6.       // to do    
  7.     }  
  8. });  
再次运行,还是不行!没办法,看源码吧!

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

[java]  view plain copy print ?
  1. public void setOnClickListener(OnClickListener l) {  
  2.         if (!isClickable()) {  
  3.             setClickable(true);  
  4.         }  
  5.         mOnClickListener = l;  
  6.     }  
呵呵,你会明白,只要点击button都会将setClickable设置为true,所以在setOnClickListener之前setClickable设置为false只不过是多此一举!

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

[java]  view plain copy print ?
  1. btn_to.setOnClickListener(new Button.OnClickListener() {  
  2.   
  3.     @Override  
  4.     public void onClick(View v) {  
  5.         // to do  
  6.     }  
  7. });  
  8.           
  9. btn_to.setClickable(false);  

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

yes,搞定!

http://www.ngui.cc/el/5557184.html

相关文章

can not resolve symbol R

android studio经常会莫名奇妙的找不到R文件。 1.多半是xml文件有问题&#xff0c;标签不匹配等等&#xff0c;仔细检查。 2.如果提示的错误你已经解决&#xff0c;但是仍然不听的提示错误。 重启androidstutio&#xff0c;但是比较麻烦。 stackoverflow上的解决方法是&#xf…

当activity运行时添加fragment(fragment应用的第二种方法)

你设计支持广泛屏幕大小的应用时&#xff0c;你可以在不同的布局配置中重用你的frament&#xff0c;在可用的屏幕空间基础上优化用户体验。 例如&#xff0c;在手持设备上&#xff0c;对于一个单窗口的用户界面来说同一时间可能只适合显示一个fragment。反之&#xff0c;你可能…

activity运行时添加fragment(第二种方式使用fragment)

你设计支持广泛屏幕大小的应用时&#xff0c;你可以在不同的布局配置中重用你的frament&#xff0c;在可用的屏幕空间基础上优化用户体验。 例如&#xff0c;在手持设备上&#xff0c;对于一个单窗口的用户界面来说同一时间可能只适合显示一个fragment。反之&#xff0c;你可能…

Android修改最小SDK版本(minSdkVersion)

修改最小SDK版本(minSdkVersion) 版本: Android Studio 1.4.1 因为Android的一些特定功能需要高版本的支持, 当最小SDK版本(minSdkVersion)过低时, 会出现报错, 所以要修改; 如果在Eclipse中, 修改Manifest属性即可; Android Studio使用gradle进行构建, 所以需要修改gradle…

Android仿微信气泡聊天界面设计(二)

微信的气泡聊天是仿iPhone自带短信而设计出来的&#xff0c;不过感觉还不错可以尝试一下仿着微信的气泡聊天做一个Demo&#xff0c;给大家分享一下&#xff01;效果图如下&#xff1a; 气泡聊天最终要的是素材&#xff0c;要用到9.png文件的素材&#xff0c;这样气泡会随着聊天…

hadoop mkdir: Cannot create directory /usr. Name node is in safe mode.

离开安全模式方法 bin/hadoop dfsadmin -safemode leave 若不处理安全模式的话&#xff0c;web服务无法启动&#xff0c;dfsadmin report结果异常

hadoop2.7.1使用dfs命令的错误(bin/hdfs dfs -mkidr input的错误)

. 离开安全模式方法 bin/hadoop dfsadmin -safemode leave hadoop2.7.1 相对路径不能用&#xff0c;似乎必须用绝对路径创建&#xff1f;&#xff1f;&#xff1f;&#xff1f; bin/hdfs dfs -mkdir input错误 提示“ls: input: No such file or directory” &#xff08;环境…

android存储之preference和SQLite

android preference&#xff1a; 在android中&#xff0c;最简单的持久化数据的办法是使用Preferences API&#xff0c;获取preference对象有三种方式&#xff0c;都是通过Activity对象的方法&#xff0c;获取的是android.content.SharedPreferences对象实例。 getPreferences(…

Android Manifest.xml中application功能和重写

android:name属性是用来设置所有activity 属于哪个application的&#xff0c;默认是android.app.Application。 当然也可以自己定义一个类&#xff0c;例如&#xff1a; public class TestApplication extends Application {} 这个类的作用是为了放一些全局的和一些上下文都要用…

android 如何设置窗体特性getWindow().setFlags

//设置窗体全屏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //设置窗体始终点亮 getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN…