LevelListDrawable,带有空案例

时间:2015-03-11 13:56:04

标签: android xml android-drawable xml-drawable

在Android中是否可以为LevelListDrawable提供一个空案例? “空”就像“没有形象”。例如,看看下面的LevelListDrawable:

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >        
    <item
        android:drawable="@drawable/face_1"
        android:maxLevel="1" />
    <item
        android:drawable="@drawable/face_2"
        android:maxLevel="2" />
    <item
        android:drawable="@drawable/face_3"
        android:maxLevel="3" />
    <item
        android:drawable="@drawable/face_4"
        android:maxLevel="4" />
    <item
        android:drawable="@drawable/face_5"
        android:maxLevel="5" />
    <item
        android:drawable="@drawable/face_6"
        android:maxLevel="6" />
</level-list>

这是一个有6个面孔的骰子。我也想要一张空脸。 NULL情况,或类似的情况。

<?xml version="1.0" encoding="utf-8"?>
    <level-list xmlns:android="http://schemas.android.com/apk/res/android" >        
        <item
            android:drawable=""
            android:maxLevel="0" />
        <item
            android:drawable="@drawable/face_1"
            android:maxLevel="1" />
        <item
            android:drawable="@drawable/face_2"
            android:maxLevel="2" />
        <item
            android:drawable="@drawable/face_3"
            android:maxLevel="3" />
        <item
            android:drawable="@drawable/face_4"
            android:maxLevel="4" />
        <item
            android:drawable="@drawable/face_5"
            android:maxLevel="5" />
        <item
            android:drawable="@drawable/face_6"
            android:maxLevel="6" />
    </level-list>

目前我模拟了这样的行为:

ImageView image = new ImageView(context);
image.setImageDrawable(getResources().getDrawable(R.drawable.dice));
image.setImageLevel(3);
if(somethingHappened){
    image.setImageDrawable(null);
}

但之后我必须再次致电image.setImageDrawable(getResources().getDrawable(R.drawable.dice));而不是改变图像等级。谢谢。

1 个答案:

答案 0 :(得分:1)

默认情况下,

minLevel0,因此如果您想要face_1排除显示level=0,请明确添加

<item
     android:drawable="@drawable/face_1"
     android:minLevel="1"
     android:maxLevel="1" />

问题是现在会显示face_2(因为它匹配[0, 2]),但是如果您为所有面孔添加minmax每个人都有价值,他们会很好地发挥。

有关详情,请参阅android.graphics.drawable.LevelListDrawable.LevelListState#indexOfLevel

或者我在某个地方看到了一个神奇的价值:

<item
    android:drawable="@null"
    android:maxLevel="0" />

但是这可能会引发LevelListDrawable#inflate的NPE或异常:

  

&LT;项目&GT; tag需要一个'drawable'属性或定义drawable

的子标记