您的位置:首页 > 移动开发 > Android开发

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

2017-03-28 11:12 567 查看
问题:

自定义了一个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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  selector 无效果