关闭

android问题之Button自定义样式selector后,点击无效果

标签: selector无效果
348人阅读 评论(0) 收藏 举报
分类:

问题:
自定义了一个button样式,如下,正常颜色为红色,按下为蓝色,但是点击无变色效果,一直为红色。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <corners android:radius="5dp"/>
            <solid android:color="@color/colorAccent"/>
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape>
            <corners android:radius="5dp"/>
            <solid android:color="@color/colorPrimaryDark"/>
        </shape>
    </item>
    <item android:state_focused="true">
        <shape>
            <corners android:radius="5dp"/>
            <solid android:color="@color/colorPrimaryDark"/>
        </shape>
    </item>
</selector>

解决:
将不带状态的样式放在最后,即可解决问题。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">
        <shape>
            <corners android:radius="5dp"/>
            <solid android:color="@color/colorPrimaryDark"/>
        </shape>
    </item>
    <item android:state_focused="true">
        <shape>
            <corners android:radius="5dp"/>
            <solid android:color="@color/colorPrimaryDark"/>
        </shape>
    </item>

    <!--不带状态-->
    <item>
        <shape>
            <corners android:radius="5dp"/>
            <solid android:color="@color/colorAccent"/>
        </shape>
    </item>

</selector>

原因:
selector中 item 是有顺序,类似于if语句,从上往下,当已有匹配的条件时,将不会再往下匹配。
所以,当无状态的 item 作为背景色放在第一位时,被匹配到了,所以不会再往下匹配。

参考:http://www.jianshu.com/p/939a6d5760d8

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:45850次
    • 积分:758
    • 等级:
    • 排名:千里之外
    • 原创:31篇
    • 转载:6篇
    • 译文:0篇
    • 评论:3条
    最新评论