加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Binary XML file line #3: <item> tag requires a

发布时间:2020-12-16 08:42:44 所属栏目:百科 来源:网络整理
导读:(转载)http://www.jb51.cc/article/p-wdyxposp-db.html 异常日志: Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #3: item tag requires a 'drawable' attribute or child tag defining a drawable 产生原因: 我的一个button按

(转载)http://www.52php.cn/article/p-wdyxposp-db.html

异常日志:

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
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <selectorxmlns:android="http://schemas.android.com/apk/res/android">
  3. <!--点击状态下的效果-->
  4. itemandroid:state_pressed="true"shape>
  5. <!--设置背景填充色为黑色-->
  6. solidandroid:color="@color/black"/>
  7. <!--设置边框宽度为1dp,边框颜色为白色-->
  8. strokeandroid:width="1dp"android:color="@color/white"<!--设置按钮圆角半径为5dp-->
  9. cornersandroid:radius="5dp"<!--设置按钮中间文字距上下左右都为10dp的间距-->
  10. paddingandroid:bottom="10dp"android:left="10dp"android:right="10dp"android:top="10dp"</item<!--正常状态下(非点击)的效果-->
  11. itemandroid:state_pressed="false"<!--设置背景填充色为白色-->
  12. solidandroid:color="@color/white"/>
  13. <!--设置边框宽度为1dp,边框颜色为黑色-->
  14. strokeandroid:width="1dp"android:color="@color/black"<!--设置按钮圆角半径为5dp-->
  15. <!--设置按钮中间文字距上下左右都为10dp的间距-->
  16. selector>

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

在按钮被点击的时候背景色和字体颜色混成一体,所以我们最好同时给字体颜色设置一个selector,如下:
copy
<!--button点击状态下的字体颜色-->
  • itemandroid:state_pressed="true"android:color="@color/white"><!--button正常状态下的字体颜色-->
  • itemandroid:state_pressed="false"android:color="@color/black">

  • 最后在界面layout中设置button属性:
    copy
    Button
  • android:layout_width="wrap_content"
  • android:layout_height="wrap_content"
  • android:text="@string/button"
  • android:background="@drawable/button_selector"
  • android:textColor="@color/button_text_selector"/>

  • 这样我们的button效果就会如图:
    button正常状态下为白底黑字黑边,点击状态下为黑底白字白边。

    demo下载:

    http://download.csdn.net/detail/zhufuing/6974387


    //-----------------------------------------------------------------------------------------------------------------------------------------------------------------

    由于下面的一句话引起的:

    radio.setBackgroundResource(R.drawable.radiobtn_selector);
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:color="@color/title" android:state_checked="true"></item>
            <item android:color="@color/title" android:state_pressed="true"></item>
            <item android:color="@color/white"></item>
        </selector>

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


    改成如下:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true">
            <shape>
                <solid android:color="@color/title" />
                <stroke android:width="1dp" android:color="@color/white" />
                <corners android:radius="5dp" />
                <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
            </shape>
        </item>
        <item android:state_checked="true">
            <shape>
                <solid android:color="@color/title" />
                <stroke android:width="1dp" android:color="@color/white" />
                <corners android:radius="5dp" />
                <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
            </shape>
        </item>
        <item>
            <shape>
                <solid android:color="@color/white" />
                <stroke android:width="1dp" android:color="@color/white" />
                <corners android:radius="5dp" />
                <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
            </shape>
        </item>
    </selector>

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读