分析了解析过程后,其中selector.xml里可以直接用代码实现,比如在自定义View的时候就可以用到。
StateListDrawable stateListDrawable = new StateListDrawable();
//注意该处的顺序,只要有一个状态与之相配,背景就会被换掉
//所以不要把大范围放在前面了,如果sd.addState(new[]{},normal)放在第一个的话,就没有什么效果了
stateListDrawable.addState(new int[]{android.R.attr.state_pressed, android.R.attr.state_enabled}, getDrawable(android.R.attr.state_pressed));
stateListDrawable.addState(new int[]{-android.R.attr.state_enabled}, getDrawable(-android.R.attr.state_enabled));
//没有任何状态时显示的图片,就设置空集合,默认状态
stateListDrawable.addState(new int[]{}, getDrawable(android.R.attr.state_enabled));
其中“-”表示对应的属性为false。
网友评论