问题描述
|
有没有一种方法可以组合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 \”。