android 代码实现 selector StateListDrawable

分析了解析过程后,其中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。

来自链接

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。