如何从布尔资源获取可绘制资源

时间:2020-01-17 19:59:19

标签: android android-studio android-drawable android-selector

是否有一种从布尔资源中获取可绘制资源的方法?

例如:

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>

我应该使用一种特定的状态,因为据我了解,它们都与特定的事件(检查,聚焦等)有关。也许我不应该使用选择器。我只是想拥有一个可以调用的资源,它实际上是在链接到另外两个资源,但是会根据我的布尔值选择一个资源。

1 个答案:

答案 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就会自动更新。

编辑:问题稍微复杂一点,并在注释中解决了。