Selector无效的几种情况

前言

在安卓开发中,经常会Selector来实现UI中的点按效果,以此回避重写相对复杂的OnTouchEvent事件方法,但是有没有遇到使用了Selector但点击无效果的情况呢?此文对会造成Selector无效的几种情况简单做一个总结。

1.同名问题

使用xml生成的drawable与图片不能重名,否则系统优先调用图片而不是xml,所以使用xml记得删除同名图片。

2.顺序问题

在Selector文件中,没有state属性的Item一定要放在最后一项才能被系统执行,如:

1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/slider_pressed" android:state_pressed="true" />
<item android:drawable="@drawable/slider_normal" android:state_pressed="false" />
<item android:drawable="@drawable/slider_normal" />
</selector>

3.渐变差异问题

在未点击和点击状态下的图的差异尽量使用颜色区分,使用大小通常是没有变化,这可能是由于一般Background属性都是自适应填充的,大小都是一致的。