是否有一种从布尔资源中获取可绘制资源的方法?
例如:
bools.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="use_version_1_drawables">true</bool>
</resources>
my_drawable.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/my_drawable_version_1"/>
<item android:drawable="@drawable/my_drawable_version_2"/>
</selector>
我应该使用一种特定的状态,因为据我了解,它们都与特定的事件(检查,聚焦等)有关。也许我不应该使用选择器。我只是想拥有一个可以调用的资源,它实际上是在链接到另外两个资源,但是会根据我的布尔值选择一个资源。
答案 0 :(得分:0)
您很近。您可以将选择器视为if / else语句。您现在所缺少的是您的实际状态。这是一个示例:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorPrimaryDark" android:state_checked="true" />
<item android:color="@color/gray" android:state_checked="false" />
</selector>
如果您将其与“复选框”之类的东西一起使用,则只需将此选择器设置为复选框的可绘制资源,state_checked就会自动更新。
编辑:问题稍微复杂一点,并在注释中解决了。