如何实现drawable局部变色?
How to achieve partially color changing of drawable?
我正在将我的应用程序的设计基础架构更改为 Material 设计组件,并希望实现如下目标:
这来自toggle button,它表明可以对可绘制对象进行部分着色,但是没有实现示例如何实现这一点。
在我的应用程序中,我有一个带有前景色的文本格式工具栏,我需要以这种方式准确显示所选文本颜色。
非常感谢任何建议。
您可以将图标分成两部分(相同大小),例如我们可以从 material icons
中获取“格式颜色文本”图标
然后使用 <layer-list>
(LayerDrawable
)
简单地将两个可绘制对象合并为一个
ic_format_color_text.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_format_color_text_black_part1_24dp" />
<item android:drawable="@drawable/ic_format_color_text_black_part2_24dp" />
</layer-list>
现在,此可绘制对象可用作按钮的图标 (MaterialButtonToggleGroup
+ MaterialButton
)。仅对“底部形状”部分着色:
val dr = (colorTextBtn.icon as? LayerDrawable)?.getDrawable(0 /* colored shape layer index*/)
dr?.let { DrawableCompat.setTint(dr, /* color */) }
我正在将我的应用程序的设计基础架构更改为 Material 设计组件,并希望实现如下目标:
这来自toggle button,它表明可以对可绘制对象进行部分着色,但是没有实现示例如何实现这一点。 在我的应用程序中,我有一个带有前景色的文本格式工具栏,我需要以这种方式准确显示所选文本颜色。
非常感谢任何建议。
您可以将图标分成两部分(相同大小),例如我们可以从 material icons
中获取“格式颜色文本”图标然后使用 <layer-list>
(LayerDrawable
)
ic_format_color_text.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_format_color_text_black_part1_24dp" />
<item android:drawable="@drawable/ic_format_color_text_black_part2_24dp" />
</layer-list>
现在,此可绘制对象可用作按钮的图标 (MaterialButtonToggleGroup
+ MaterialButton
)。仅对“底部形状”部分着色:
val dr = (colorTextBtn.icon as? LayerDrawable)?.getDrawable(0 /* colored shape layer index*/)
dr?.let { DrawableCompat.setTint(dr, /* color */) }