我有一个可选择的Button / ImageView的可绘制资源,如下所示:
<selector>
<item android:state_selected="true">
<layer-list>
<item>
<shape android:shape="oval">
<solid android:color="@color/blue"/>
</shape>
</item>
<item>
<bitmap
android:src="@drawable/ic_icon"
android:tint="@color/white"/>
</item>
</layer-list>
</item>
<item>
<layer-list>
<item>
<shape android:shape="oval">
<solid android:color="@color/background_unselected"/>
</shape>
</item>
<item>
<bitmap
android:src="@drawable/ic_icon"
android:tint="@color/icon_unselected"/>
</item>
</layer-list>
</item>
因为我已切换到使用VectorDrawables,上述声明不起作用,因为我无法引用带有 <bitmap>
标记的VectorDrawable . 但据我所知,这是我可以给图标着色的唯一方法 .
我也不能在代码中应用Colorfilter,因为这会使整个drawable而不仅仅是图标 .
有什么建议?
1 回答
您可以将颜色定义为属性并在SVG中引用它们 . 然后可以加载由主题设计的drawable .
简短的例子:
attributes.xml
ic_icon.xml
styles.xml
然后加载你的主题和drawable:
在您的特定选择器中,您应该替换
by
<item android:drawable="@drawable/ic_icon">
Reference and full example