1、xml方式
直接在drawable文件夹中添加一个xml文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/icon_press" android:state_pressed="true"/>
<item android:drawable="@drawable/icon_select" android:state_selected="true"/>
<item android:drawable="@drawable/icon_default"/>
</selector>
然后将该xml直接设置为控件的background即可
2.动态添加
在java代码中动态添加一个selector
StateListDrawable selector = new StateListDrawable();
Drawable pressDrawable = getResources().getDrawable(R.drawable.pressDrawableId);
Drawable selectDrawable = getResources().getDrawable(R.drawable.selectDrawableId);
Drawable defaultDrawable = getResources().getDrawable(R.drawable.defaultDrawableId);
selector.addState(new int[]{android.R.attr.state_pressed}, pressDrawable);
selector.addState(new int[]{android.R.attr.state_selected}, selectDrawable);
// 添加一个默认状态, 默认状态必须写在其他状态的最后面, 否则其他状态失效
selector.addState(new int[]{}, defaultDrawable);
然后将该select动态设置为控件背景