如何解决组合StateListDrawable和LevelListDrawable
| 有没有一种方法可以组合StateListDrawable和LevelListDrawable的效果? 我写了这个资源文件,但是使用时什么也没出现:<?xml version=\"1.0\" encoding=\"utf-8\"?>
<level-list xmlns:android=\"http://schemas.android.com/apk/res/android\">
<selector
android:constantSize=\"true\"
android:variablePadding=\"false\"
android:maxLevel=\"0\"
>
<item android:state_pressed=\"true\">
<layer-list>
<item android:drawable=\"@drawable/btu_color_standard\" />
<item android:drawable=\"@drawable/btu_shade_pressed\" />
</layer-list>
</item>
<item android:state_focused=\"true\">
<layer-list>
<item android:drawable=\"@drawable/btu_color_standard\" />
<item android:drawable=\"@drawable/btu_shade_selected\" />
</layer-list>
</item>
<item>
<layer-list>
<item android:drawable=\"@drawable/btu_color_standard\" />
<item android:drawable=\"@drawable/btu_shade_normal\" />
</layer-list>
</item>
</selector>
<selector
android:constantSize=\"true\"
android:variablePadding=\"false\"
android:maxLevel=\"1\"
>
<item android:state_pressed=\"true\">
<layer-list>
<item android:drawable=\"@drawable/btu_color_standard\" />
<item android:drawable=\"@drawable/btu_lighted\" />
<item android:drawable=\"@drawable/btu_shade_pressed\" />
</layer-list>
</item>
<item android:state_focused=\"true\">
<layer-list>
<item android:drawable=\"@drawable/btu_color_standard\" />
<item android:drawable=\"@drawable/btu_lighted\" />
<item android:drawable=\"@drawable/btu_shade_selected\" />
</layer-list>
</item>
<item>
<layer-list>
<item android:drawable=\"@drawable/btu_color_standard\" />
<item android:drawable=\"@drawable/btu_lighted\" />
<item android:drawable=\"@drawable/btu_shade_normal\" />
</layer-list>
</item>
</selector>
</level-list>
然后我打电话
_btn.getBackground().setLevel(level); //level is either 0 or 1
更改可绘制对象的级别(_btn是按钮btw)。
为什么不起作用?
提前致谢。
解决方法
找到解决方案:元素必须包含在- 元素中:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<level-list xmlns:android=\"http://schemas.android.com/apk/res/android\">
<item
android:maxLevel=\"0\"
>
<selector
android:constantSize=\"true\"
android:variablePadding=\"false\"
>
<item android:state_pressed=\"true\">
<layer-list>
<item android:drawable=\"@drawable/btu_color_standard\" />
<item android:drawable=\"@drawable/btu_shade_pressed\" />
</layer-list>
</item>
<item android:state_focused=\"true\">
<layer-list>
<item android:drawable=\"@drawable/btu_color_standard\" />
<item android:drawable=\"@drawable/btu_shade_selected\" />
</layer-list>
</item>
<item>
<layer-list>
<item android:drawable=\"@drawable/btu_color_standard\" />
<item android:drawable=\"@drawable/btu_shade_normal\" />
</layer-list>
</item>
</selector>
</item>
<item
android:maxLevel=\"1\"
>
<selector
android:constantSize=\"true\"
android:variablePadding=\"false\"
>
<item android:state_pressed=\"true\">
<layer-list>
<item android:drawable=\"@drawable/btu_color_standard\" />
<item android:drawable=\"@drawable/btu_lighted\" />
<item android:drawable=\"@drawable/btu_shade_pressed\" />
</layer-list>
</item>
<item android:state_focused=\"true\">
<layer-list>
<item android:drawable=\"@drawable/btu_color_standard\" />
<item android:drawable=\"@drawable/btu_lighted\" />
<item android:drawable=\"@drawable/btu_shade_selected\" />
</layer-list>
</item>
<item>
<layer-list>
<item android:drawable=\"@drawable/btu_color_standard\" />
<item android:drawable=\"@drawable/btu_lighted\" />
<item android:drawable=\"@drawable/btu_shade_normal\" />
</layer-list>
</item>
</selector>
</item>
</level-list>
, 就我而言,问题是我没有将按钮设置为使用级别列表中的背景。例如,如果您在res / drawable / button_levels.xml中定义了级别列表,则需要将按钮背景设置为\“ @ drawable / button_levels \”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。