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

Android 如何从布尔资源中获取可绘制资源,android,android-studio,android-drawable,android-selector,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> <?xml version="1.0" encoding="utf-8"?> <selector xmlns:andro

有没有办法从布尔资源中获取可绘制资源

例如:

bools.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="use_version_1_drawables">true</bool>
</resources>
<?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>

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

你很接近了。您可以将选择器视为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>

如果您将它与复选框一起使用,那么只需将此选择器设置为复选框的可绘制资源,并且状态_checked将自动更新


编辑:问题稍微复杂一点,在评论中得到了解决。

我实际上是在使用drawable作为导航项目的图标,所以选中的
android:state
状态对我不起作用。我不想基于选中状态更改drawable,而是只想使用或基于我的布尔值。此视图是您创建的自定义类吗?或者是来自某个导航组件?它只是用于菜单中的图标。该菜单用于底部导航视图.Hm。我会想办法的。我现在能想到的最好的办法就是根据布尔值来扩展不同的菜单,但这似乎不太正确。是的,这正是我试图避免的事情。你打算用哪种方法来改变
使用版本1\u可绘制文件的值?@art我正在编写一个模块,所以我打算在使用该模块时,你所要做的就是添加一个id为
用户版本1\u可绘制文件
的布尔值并设置它您可以使用可绘制id的数组(xml格式)。每个数组将有两个条目,位置0表示false,位置1表示true。请参见示例,了解如何获取实际的可提取数据