<item> tag requires a 'drawable' attribute or child tag defining a drawab


转载自:http://blog.csdn.net/zhufuing/article/details/20134255

异常日志:

Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #3: <item> tag requires a 'drawable' attribute or child tag defining a drawable


产生原因:

      我的一个button按钮的background属性中设置成"@color/button_text_selector",按照异常来说,这个background这个属性的值必须是drawable类型的,不能是color类型。


drawable&color:

本来我是想给button设置一个selector,让按钮背景正常状态下是一个颜色值,点击状态下背景又是另外一个值,但是没想到报了这样一个错误,既然background只能设置为drawable,那我就写一个drawable的selector给button设置不同状态下的颜色值,如下所示:
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <!-- 点击状态下的效果 -->  
  4.     <item android:state_pressed="true">  
  5.         <shape>  
  6.             <!-- 设置背景填充色为黑色 -->  
  7.             <solid android:color="@color/black"/>  
  8.             <!-- 设置边框宽度为1dp,边框颜色为白色 -->  
  9.             <stroke android:width="1dp" android:color="@color/white" />  
  10.             <!-- 设置按钮圆角半径为5dp -->  
  11.             <corners android:radius="5dp" />  
  12.             <!-- 设置按钮中间文字距上下左右都为10dp的间距 -->  
  13.             <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />  
  14.         </shape>  
  15.     </item>  
  16.     <!-- 正常状态下(非点击)的效果 -->  
  17.     <item android:state_pressed="false">  
  18.         <shape>  
  19.             <!-- 设置背景填充色为白色 -->  
  20.             <solid android:color="@color/white"/>  
  21.             <!-- 设置边框宽度为1dp,边框颜色为黑色 -->  
  22.             <stroke android:width="1dp" android:color="@color/black" />  
  23.             <!-- 设置按钮圆角半径为5dp -->  
  24.             <corners android:radius="5dp" />  
  25.             <!-- 设置按钮中间文字距上下左右都为10dp的间距 -->  
  26.             <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />  
  27.         </shape>  
  28.     </item>  
  29.   
  30. </selector>  

这样即可对不同状态下的button设置颜色值了,还可以设置其他圆角之类的效果;当然这个只能设置按钮背景的效果,但是文字是没有点击效果的,如果使用我上面缩写的selector,那么就会在按下按钮的时候出现这个效果:

在按钮被点击的时候背景色和字体颜色混成一体,所以我们最好同时给字体颜色设置一个selector,如下:
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <!-- button点击状态下的字体颜色 -->  
  4.     <item android:state_pressed="true" android:color="@color/white"></item>  
  5.     <!-- button正常状态下的字体颜色 -->  
  6.     <item android:state_pressed="false" android:color="@color/black"></item>  
  7. </selector>  

最后在界面layout中设置button属性:
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <Button  
  2.         android:layout_width="wrap_content"  
  3.         android:layout_height="wrap_content"  
  4.         android:text="@string/button"  
  5.         android:background="@drawable/button_selector"  
  6.         android:textColor="@color/button_text_selector"/>  

这样我们的button效果就会如图:

button正常状态下为白底黑字黑边,点击状态下为黑底白字白边。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值