一个ImageView的selector 如下:
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 默认时的背景图片-->
<item android:drawable="@mipmap/message_normal" />
<!-- 触摸模式下单击时的背景图片-->
<item android:state_focused="false"
android:state_pressed="true"
android:drawable="@mipmap/message_press" />
<!--选中时的图片背景-->
<item android:state_selected="true"
android:drawable="@mipmap/message_press" />
</selector>
但是代码中设置:
msg.setSelected(true);
确是无效的,这是为何呢?
原因在你的默认时的背景图必须放在最后,才会生效!如下:
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 触摸模式下单击时的背景图片-->
<item android:state_focused="false"
android:state_pressed="true"
android:drawable="@mipmap/message_press" />
<!--选中时的图片背景-->
<item android:state_selected="true"
android:drawable="@mipmap/message_press" />
<!-- 默认时的背景图片,必须放到最后-->
<item android:drawable="@mipmap/message_normal" />
</selector>