2

レベルリスト XML で定義されたドローアブルの 1 つをプロパティとしてXMLで選択するにはどうすればよいですか? 多数の小さな XML ファイルを定義することを避けるために、レベル リスト XML 自体でドローアブルを定義しています。android:drawable

<?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="@color/empty" 
                android:endColor="@android:color/white"
                android:angle="90" />

        </shape>
    </item>

    <item android:maxLevel="1">
        <shape
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle" >
            <gradient 
                android:startColor="@color/low"
                android:endColor="@android:color/white"
                android:angle="90" />

        </shape>
    </item>

    <item android:maxLevel="2">
        <shape 
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <gradient 
                android:startColor="@color/middle"
                android:endColor="@android:color/white"
                android:angle="90" />

        </shape>
    </item>

    <item android:maxLevel="3">
        <shape 
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <gradient 
                android:startColor="@color/high"
                android:endColor="@android:color/white"
                android:angle="90" />

        </shape>
    </item>

    <item android:maxLevel="4">
        <shape 
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <gradient 
                android:startColor="@color/full"
                android:endColor="@android:color/white"
                android:angle="90" />

        </shape>
    </item>

</level-list>
4

2 に答える 2

0

API 24 (およびそれ以降) では、この機能がサポートされるようになりました。0 から 10000 の範囲で初期ドローアブル レベルを指定android:levelする要素にあり、このように使用できます。<scale><layer-list>

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background"
          android:gravity="center_vertical|fill_horizontal">
        <shape android:shape="rectangle"
            android:tint="?attr/colorControlNormal">
            <size android:height="4dp" />
            <solid android:color="@android:color/white_disabled_material" />
        </shape>
    </item>
    <item android:id="@android:id/secondaryProgress"
          android:gravity="center_vertical|fill_horizontal">
        <scale android:scaleWidth="100%"
            android:level="2000">
            <shape android:shape="rectangle"
                android:tint="?attr/colorControlActivated" >
                <size android:height="4dp" />
                <solid android:color="@android:color/black" />
            </shape>
        </scale>
    </item>
    <item android:id="@android:id/progress"
          android:gravity="center_vertical|fill_horizontal">
        <scale android:scaleWidth="100%"
            android:level="1000">
            <shape android:shape="rectangle"
                android:tint="?attr/colorControlActivated" >
                <size android:height="4dp" />
                <solid android:color="@android:color/white_disabled_material" />
            </shape>
        </scale>
    </item>
</layer-list>

setLevelレベルを動的に変更するには、プログラムで呼び出します

于 2016-08-13T13:53:07.877 に答える