Объединить StateListDrawable и LevelListDrawable - PullRequest
3 голосов
/ 14 июня 2011

Есть ли способ объединить эффекты 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 - кнопка).

Почему это не работает?

Заранее спасибо.

Ответы [ 2 ]

8 голосов
/ 05 августа 2011

Я нашел решение: элементы должны быть заключены в элементы:

<?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>
0 голосов
/ 26 октября 2012

В моем случае проблема была в том, что я не установил кнопку для использования фона в списке уровней.Например, если у вас есть список уровней, определенный в res / drawable / button_levels.xml, вам нужно установить фон кнопки как "@ drawable / button_levels".

...