对话框或工具栏中作为图标的矢量绘图的填充颜色

Fill color of vector drawables that are icons in dialogs or toolbars

如果我想将矢量可绘制对象用作对话框中的图标或工具栏中的徽标怎么办?然后我会像这样使用它们:

alertDialogBuilder.setIcon(R.drawable.my_vector_drawable);
toolbar.setLogo(R.drawable.my_vector_drawable);
toolbar.setNavigationIcon(R.drawable.my_vector_drawable);
...

我说得对吗?

但是这里出现了一个问题:如何在不修改矢量 xml 文件的情况下更改它们的填充颜色?

例如,我可以使用 xml 中的 'tint' 标记或代码中的 'setColorFilter()' 方法更改视图中任何矢量的填充颜色。

如果您想要更改填充颜色而不是更改 xml 文件,您必须创建该文件的 Drawable 实例。此实例为您提供更改文件的方法。

例如:

Drawable myIcon = ContextCompat.getDrawable(this,R.drawable.my_vector_drawable);

    myIcon.setColorFilter(ContextCompat.getColor(this, R.color.yourcolor));

    alertDialogBuilder.setIcon(myIcon);
    toolbar.setLogo(myIcon);
    toolbar.setNavigationIcon(myIcon);