Exception android.content.res.Resources$NotFoundException: File res/drawable/my.xml from drawable re

#AndroidStudio使用问题总结

1. 使用选择器改变字体颜色。

新建selector来控制RadioButton的字体颜色时,出现错误。

错误描述:

  • XML文档配置如下:
<RadioButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:button="@null"
            android:drawableTop="@drawable/contacts_icon_selector"
            android:gravity="center"

            android:text="Contacts"
            android:textColor="@drawable/font_color_selector" />

通过触发checked改变,来完成字体的变化。

  • 配置的选择器文档如下:
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@android:color/darker_gray"
        android:state_checked="true" />
    <item android:drawable="@android:color/holo_blue_dark"  />

</selector>
  • 安装到测试机上时,打开APP就直接报错。关键错误信息如下
    stactTrace (logcat):
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/font_color_selector.xml from color state list resource ID #0x7f02003d

Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #4: <item> tag requires a 'android:color' attribute.

通过在网上查询,在stackoverflow发现类似问题,
http://stackoverflow.com/questions/17701186/exception-android-content-res-resourcesnotfoundexception-file-res-drawable-my

按照上面网址网友的提示,依旧没有解决问题。

思考良久。书写selector时,studio会自动补出书写drawable的命令。但是对我们想要改变的color未进行提示。
根据上诉错误提示,讲color的属性,直接写在该标签内,最后完美解决问题。
修改的selector代码如下:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:color="@color/rb_blue_dark" android:drawable="@android:color/darker_gray"
        android:state_checked="true" />
    <item android:color="@color/rb_blue" android:drawable="@android:color/holo_blue_dark"  />

</selector>

上面代码中。在定义字体颜色的时候,发挥真正效果的只有

android:color="@color/rb_blue"

android:drawable="@android:color/holo_blue_dark"
是不产生任何效果的。(但不能删除。因为是drawableSelector)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值