/**
* 设置图片的selector
*
* @param context
* @param idNormal
* @param idPressed
* @param idFocused
* @param idUnable
* @return
*/
public static StateListDrawable newSelector(Context context, int idNormal, int idPressed, int idFocused,
int idUnable) {
StateListDrawable bg = new StateListDrawable();
Drawable normal = idNormal == -1 ? null : context.getResources().getDrawable(idNormal);
Drawable pressed = idPressed == -1 ? null : context.getResources().getDrawable(idPressed);
Drawable focused = idFocused == -1 ? null : context.getResources().getDrawable(idFocused);
Drawable unable = idUnable == -1 ? null : context.getResources().getDrawable(idUnable);
// View.PRESSED_ENABLED_STATE_SET
bg.addState(new int[] { android.R.attr.state_pressed, android.R.attr.state_enabled }, pressed);
// View.ENABLED_FOCUSED_STATE_SET
bg.addState(new int[] { android.R.attr.state_enabled, android.R.attr.state_focused }, focused);
// View.ENABLED_STATE_SET
bg.addState(new int[] { android.R.attr.state_enabled }, normal);
// View.FOCUSED_STATE_SET
bg.addState(new int[] { android.R.attr.state_focused }, focused);
// View.WINDOW_FOCUSED_STATE_SET
bg.addState(new int[] { android.R.attr.state_window_focused }, unable);
// View.EMPTY_STATE_SET
bg.addState(new int[] {}, normal);
return bg;
}
用法:btn.setBackgroundDrawable(newSelector(this, R.drawable.btn_normal, R.drawable.btn_selected,
<span style="white-space:pre"> </span> R.drawable.btn_selected, R.drawable.btn_unable));
<pre name="code" class="html">/**
* 设置不同状态时其文字颜色
* @param normal
* @param pressed
* @param focused
* @param unable
* @return
*/
private ColorStateList createColorStateList(int normal, int pressed, int cheched, int focused, int unable) {
int[] colors = new int[] { pressed, cheched, focused, normal, focused, unable, normal };
int[][] states = new int[7][];
states[0] = new int[] { android.R.attr.state_pressed, android.R.attr.state_enabled };
states[1] = new int[] { android.R.attr.state_checked, android.R.attr.state_enabled };
states[2] = new int[] { android.R.attr.state_enabled, android.R.attr.state_focused };
states[3] = new int[] { android.R.attr.state_enabled };
states[4] = new int[] { android.R.attr.state_focused };
states[5] = new int[] { android.R.attr.state_window_focused };
states[6] = new int[] {};
ColorStateList colorList = new ColorStateList(states, colors);
return colorList;
}
用法:radioButton.setTextColor(createColorStateList(Color.BLACK, Color.RED, Color.RED, Color.RED, Color.BLACK));