码迷,mamicode.com
首页 > 其他好文 > 详细

设置background属性使用selector的时候内置?attr报错的解决方案

时间:2016-11-10 16:53:33      阅读:455      评论:0      收藏:0      [点我收藏+]

标签:;;   sof   对象   bsp   use   als   rect   原因   崩溃   

当我们设置background属性的时候可以设置background="@color/black"

也可以设置 background="@drawable/selector"

然后selector我们可以这样设置

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 没有焦点时的背景图片 -->
    <item android:drawable="@color/colorPressed" android:state_pressed="true"/>
    <item android:drawable="@color/colorPressed" android:state_focused="true"/>
    <item android:drawable="@color/colorPressed" android:state_selected="true"/>
    <item android:drawable="@color/black" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/>
</selector>
但是当我们设置了属性来设置这个颜色的时候就会遇到崩溃
比如我们这样
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 没有焦点时的背景图片 -->
    <item android:drawable="@color/colorPressed" android:state_pressed="true"/>
    <item android:drawable="@color/colorPressed" android:state_focused="true"/>
    <item android:drawable="@color/colorPressed" android:state_selected="true"/>
    <item android:drawable="?attr/backgroundColorValue" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/>
</selector>
运行的话会直接崩溃,报错的原因是无法获取到对应的drawable对象,至于为什么无法将颜色转换成对应的drawable我也不清楚,既然不能转换那我们可以手动转换
解决方案:
手动创建一个shape.xml,如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <solid android:color="?attr/backgroundColorValue" />
</shape>
然后我们再到selector中引用这个drawable就可以了
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 没有焦点时的背景图片 -->
    <item android:drawable="@color/colorPressed" android:state_pressed="true"/>
    <item android:drawable="@color/colorPressed" android:state_focused="true"/>
    <item android:drawable="@color/colorPressed" android:state_selected="true"/>
    <item android:drawable="@drawable/shape" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/>
</selector>

 

 

设置background属性使用selector的时候内置?attr报错的解决方案

标签:;;   sof   对象   bsp   use   als   rect   原因   崩溃   

原文地址:http://www.cnblogs.com/dongweiq/p/6051381.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!