在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));
而不是改变图像等级。谢谢。
答案 0 :(得分:1)
minLevel
为0
,因此如果您想要face_1
排除显示level=0
,请明确添加
<item
android:drawable="@drawable/face_1"
android:minLevel="1"
android:maxLevel="1" />
问题是现在会显示face_2
(因为它匹配[0, 2]
),但是如果您为所有面孔添加min
和max
每个人都有价值,他们会很好地发挥。
有关详情,请参阅android.graphics.drawable.LevelListDrawable.LevelListState#indexOfLevel
。
或者我在某个地方看到了一个神奇的价值:
<item
android:drawable="@null"
android:maxLevel="0" />
但是这可能会引发LevelListDrawable#inflate
的NPE或异常:
&LT;项目&GT; tag需要一个'drawable'属性或定义drawable
的子标记