首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合使用StateListDrawable和LevelListDrawable

结合使用StateListDrawable和LevelListDrawable
EN

Stack Overflow用户
提问于 2011-06-14 21:48:36
回答 2查看 3K关注 0票数 3

有没有办法将StateListDrawable和LevelListDrawable的效果结合起来?

我写了这个资源文件,但在使用时什么也没有出现:

代码语言:javascript
复制
<?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>

然后我会打电话给

代码语言:javascript
复制
_btn.getBackground().setLevel(level); //level is either 0 or 1

更改可绘制的级别(_btn是一个按钮btw)。

为什么它不起作用?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-05 15:40:52

我自己找到了解决方案:元素必须包含在元素中:

代码语言:javascript
复制
<?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>
票数 8
EN

Stack Overflow用户

发布于 2012-10-26 09:31:24

在我的例子中,问题是我没有将按钮设置为使用级别列表中的背景。例如,如果您在res/drawable/ button _levels.xml中定义了level-list,那么您需要将按钮背景设置为“@drawable/button_level”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6344521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档