今天准备为安卓应用中的Button设置样式,在可用(enabled)的时候是深灰色,在不可用(disabled)的时候是浅灰色。

[java]  view plain copy
  1. "http://schemas.android.com/apk/res/android" >  
  2.    "@drawable/button_shape_normal"   
  3.           android:state_pressed="false"/>  
  4.     "@drawable/button_shape_pressed"   
  5.           android:state_pressed="true"/>  
  6.     "@drawable/button_shape_normal"  
  7.           android:state_enabled="true"/>  
  8.     "@drawable/button_shape_disabled"  
  9.           android:state_enabled="false"/>  
  10.   
用的是android:state_enabled 这个属性。界面中的两个Button,初始设置就是不可用的,也就是说,他们应该浅灰色的。

但实际运行发现所有Button都是深灰色的,也就是说,我这个state_enabled 的设置没有起作用。这是为什么呢?


看看Xml文件,怎么看都看不出哪里有问题。

这个selector中,除了state_enabled这个状态之外,上面还有state_pressed这个状态,并且state_pressed是起作用的。

于是,根据一丝可以称之为“经验”的感觉,我试着把state_enabled和state_pressed换了一下位置,也就是把state_enabled放在最前面:

[java]  view plain copy
  1. "http://schemas.android.com/apk/res/android" >  
  2.     "@drawable/button_shape_normal"  
  3.           android:state_enabled="true"/>  
  4.     "@drawable/button_shape_disabled"  
  5.           android:state_enabled="false"/>  
  6.       
  7.     "@drawable/button_shape_normal"   
  8.           android:state_pressed="false"/>  
  9.     "@drawable/button_shape_pressed"   
  10.           android:state_pressed="true"/>  
  11.       
  12.   


然后重新运行,这个state_enabled居然就起作用了!也就是把可用和不可用的Button区分开了。


那么是否可以得出这样的结论,在selector中的这些状态,是有优先级之分的吗?

更多相关文章

  1. Activity的生命周期,状态保存,窗口显示,取得返回结果,安全退出
  2. Android(安卓)Wifi模块学习
  3. android 处理生命周期事件
  4. Android(安卓)官方架构组件 ViewModel : 对状态的持有和维护
  5. 【Android】自定义控件实现可滑动的开关(switch)
  6. android:沉浸式状态栏(状态栏一体化)
  7. Android(安卓)Permission
  8. 在Android(安卓)Studio 中使用ADB命令模拟手机各种状态(记录中...
  9. android 加载网络图片 SkImageDecoder::Factory returned null

随机推荐

  1. php用什么软件编程
  2. register_shutdown_function 函数详解
  3. 学php看什么书
  4. phpcms网站程序如何安装新的模板
  5. memcache安全相关
  6. PHP生成中文验证码并检测对错实例
  7. 如何安装phpmyadmin
  8. memcache图形化管理工具MemAdmin
  9. 十分钟快速搭建 Wordpress 博客系统
  10. php和apache如何合作的