【问题标题】:How to set tint mode and tint color for compose vector icons programtically如何以编程方式为撰写矢量图标设置色调模式和色调颜色
【发布时间】:2022-11-11 01:50:47
【问题描述】:

我有一些从 SVG 转换而来的矢量图标,我需要根据某些条件为它们自定义色调,我正在尝试以编程方式更改色调

Image(
        modifier = Modifier.size(128.dp),
        painter = painterResource(id = R.drawable.icon_1),
        contentDescription = null,
        colorFilter =  ColorFilter.tint(Color.Red)
    )

它给了我以下结果

另外,当我尝试使用

Image(
    modifier = Modifier.size(128.dp),
    painter = painterResource(id = R.drawable.icon_1),
    contentDescription = null,
    colorFilter =  ColorFilter.tint(Color.Red, blendMode = BlendMode.Multiply)
)

我也得到了同样的结果。但是,当我尝试通过添加来更改 XML 文件中的图标色调时

android:tint="@color/red"
android:tintMode="multiply"

它正确地给了我想要的结果,如下所示

那么我如何才能以编程方式获得相同的结果,因为我需要根据某些条件以编程方式将颜色更改为不同的颜色?

【问题讨论】:

    标签: android-jetpack-compose android-vectordrawable


    【解决方案1】:

    使用Icon 而不是ImageIcon 函数有一个参数可以改变图标颜色:

    Icon(
        modifier = Modifier.size(128.dp),
        painter = painterResource(id = R.drawable.icon_1),
        contentDescription = null,
        tint = Color.Red,
    )
    

    【讨论】:

    • 它给了我与图像相同的结果
    【解决方案2】:

    我可以使用blendMode = BlendMode.Modulate 修复它

        Image(
            modifier = Modifier.size(128.dp),
            painter = painterResource(id = resultType.resId),
            contentDescription = null,
            colorFilter = Color.Red, blendMode = BlendMode.Modulate) }
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      相关资源
      最近更新 更多