Множественные формы внутри shape.xml в android

Я искал возможности определять различные формы внутри одного файла shape.xml и ссылаться на каждую из них при определенных событиях.

Наконец-то я нашел решение своего вопроса. И ответ - использование списка уровней.

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="0">
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
          
        <gradient android:startColor="#aaa" 
            android:endColor="#eee" android:angle="270" />
           
        <corners android:bottomRightRadius="7dp"
            android:bottomLeftRadius="7dp" android:topLeftRadius="7dp"
            android:topRightRadius="7dp" />
    </shape>

</item>
<item android:maxLevel="1">
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval">
          
        <gradient android:startColor="#eee" android:centerColor="#ddd"
            android:endColor="#00fff2" android:angle="270" />
           
        <corners android:bottomRightRadius="7dp"
            android:bottomLeftRadius="7dp" android:topLeftRadius="7dp"
            android:topRightRadius="7dp" />
    </shape>
</item>
</level-list>

Примените это к атрибуту фона в стиле. Замена различных форм может быть достигнута путем установки уровня для этого элемента.

Например: findViewById (R.id.mybutton) .getBackground (). setLevel (1);

В приведенном выше коде я устанавливаю вторую форму для кнопки с идентификатором mybutton.

7
задан Ash 10 October 2012 в 14:07
поделиться