首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在HarmonyOS中更改元素颜色?

如何在HarmonyOS中更改元素颜色?
EN

Stack Overflow用户
提问于 2021-07-28 13:26:04
回答 2查看 88关注 0票数 0

我正在使用Java SDK在HarmonyOS中创建一个自定义组件,其中我需要在运行时更改元素颜色。

在Android中,我们有setTint()应用程序接口来在运行时改变可绘制的颜色。

对于ex:

代码语言:javascript
复制
drawable.setTint(Color.BLUE); //Require Api level 21
OR
DrawableCompat.setTint(drawable, Color.BLUE);

但是,在HMOS中,我看到没有任何像setTint()setColor()这样的api来改变元素的颜色。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-28 17:35:41

您可以使用Element类中的setColorMatrix更改图标的颜色。

代码语言:javascript
复制
public static void setIconColor(Element icon, Color color) {
    int iColor = color.getValue();
    int red   = (iColor & 0xFF0000) / 0xFFFF;
    int green = (iColor & 0xFF00) / 0xFF;
    int blue  = iColor & 0xFF;
    float[] matrix = {
            0, 0, 0, 0, red,
            0, 0, 0, 0, green,
            0, 0, 0, 0, blue,
            0, 0, 0, 1, 0 };
    ColorMatrix colorMatrix = new ColorMatrix();
    colorMatrix.setMatrix(matrix);
    icon.setColorMatrix(colorMatrix);
}
票数 2
EN

Stack Overflow用户

发布于 2021-07-29 09:01:49

您还可以通过参考以下代码来设置元素颜色:

代码语言:javascript
复制
ShapeElement shapeElementWhite = new ShapeElement();

shapeElementWhite.setRgbColor(new RgbColor(255,255,255)); // Set Color Using Numbers

shapeElementWhite.setRgbColor(RgbColor.fromArgbInt(0xADD8E6)); // Set Color Using Hexadecimal

Component component = findComponentById(ResourceTable.Id_buy_train);

component.setBackground(shapeElementWhite);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68554832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档