如何实现可绘制对象的部分颜色更改?

3
我正在将我的应用程序设计基础更改为Material Design Components,并希望实现类似于这样的效果:

enter image description here

这是来自切换按钮的内容,它显示了可部分着色的drawable,但没有实现示例。在我的应用中,我有一个文本格式工具栏,其中包括前景颜色,我需要以完全相同的方式显示所选文本的颜色。

我认为这可能是一个复杂的组件(即它内部由其他组件组成,因此它们可以具有多种颜色),或者是自定义视图,直接在画布上绘制。 - Dominik Murzynowski
1个回答

4
你可以将图标分为两个部分(大小相同),例如我们可以从 Material Icons中选择“格式颜色文本”图标。

2

然后简单地使用 <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 */) }

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接