android selector android:state_enabled 无效

简介:

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

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <selector xmlns:android="http://schemas.android.com/apk/res/android" >  
  2.    <item android:drawable="@drawable/button_shape_normal"   
  3.           android:state_pressed="false"/>  
  4.     <item android:drawable="@drawable/button_shape_pressed"   
  5.           android:state_pressed="true"/>  
  6.     <item android:drawable="@drawable/button_shape_normal"  
  7.           android:state_enabled="true"/>  
  8.     <item android:drawable="@drawable/button_shape_disabled"  
  9.           android:state_enabled="false"/>  
  10. </selector>  
用的是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 在CODE上查看代码片 派生到我的代码片
  1. <selector xmlns:android="http://schemas.android.com/apk/res/android" >  
  2.     <item android:drawable="@drawable/button_shape_normal"  
  3.           android:state_enabled="true"/>  
  4.     <item android:drawable="@drawable/button_shape_disabled"  
  5.           android:state_enabled="false"/>  
  6.       
  7.     <item android:drawable="@drawable/button_shape_normal"   
  8.           android:state_pressed="false"/>  
  9.     <item android:drawable="@drawable/button_shape_pressed"   
  10.           android:state_pressed="true"/>  
  11.       
  12. </selector>  


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


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

相关文章
|
XML Android开发 数据格式
Android MaterialButton使用详解,告别shape、selector
Android MaterialButton使用详解,告别shape、selector
680 0
Android MaterialButton使用详解,告别shape、selector
|
XML Android开发 数据格式
Android利用selector(选择器)实现图片动态点击效果
本文介绍了Android中ImageView的`src`与`background`属性的区别及应用,重点讲解如何通过设置背景选择器实现图片点击动态效果。`src`用于显示原图大小,不拉伸;`background`可随组件尺寸拉伸。通过创建`selector_setting.xml`,结合`setting_press.xml`和`setting_normal.xml`定义按下和正常状态的背景样式,提升用户体验。示例代码展示了具体实现步骤,包括XML配置和形状定义。
562 3
Android利用selector(选择器)实现图片动态点击效果
|
XML Java Android开发
Android RecyclerView用代码动态设置item的selector
Android RecyclerView用代码动态设置item的selector
383 0
|
XML Android开发 数据格式
Android LinearLayout使用selector改变交互时背景颜色
 换言之,就像Android Button一样,基于布局文件,把LinearLayout做成一个可以在用户交互触摸点击时候背景颜色有所改变的控件。
1630 0
|
XML API Android开发
|
Android开发
Android中shape和selector的使用
Android中shape和selector的使用
211 0
Android中shape和selector的使用

热门文章

最新文章