1

我正在开发一个 Android 应用程序,我试图通过编码为按钮动态添加渐变。如果我在 xml 中静态应用渐变,则 6 位十六进制代码有效;但是当我尝试从 java 更改渐变时不起作用。在这种情况下,8 位十六进制代码有效。请帮我解决这个问题。

public void setGradient(btnGradientStartColor,btnGradientEndColor,buttonUnderAction) {

    int colors[] = { btnGradientStartColor, btnGradientEndColor };
    for(int x:colors){
        System.out.println("value in colors[]:"+x);
    }
    GradientDrawable gradientDrawable = new GradientDrawable(GradientDrawable.Orientation.BL_TR, colors);
    btnUnderAction.setBackgroundDrawable(gradientDrawable);

}

我将十六进制颜色代码和按钮 ID 传递给此方法。在这里,如果我传递 6 位十六进制代码,它不起作用,但 8 位十六进制代码起作用。例如 0xff255779 和 0xffa6c0cd 有效,但 0x30196E 和 0x3498db 无效。

有什么方法可以将 6 位十六进制代码转换为 8 位代码,或者我可以让我的代码与 6 位代码一起使用!!!!

4

1 回答 1

3

前 2 位数字 (ff) 是字母。ff 表示完全不透明,00 表示完全透明。在xml中如果使用#00ff00,则修改为ff00ff00(自动添加前导ff)。在代码中,如果你有 00ff00,它会被翻译成 0000ff00,所以完全透明。如果您有十六进制代码,请执行

color = color | 0xff000000;

使其完全不透明

于 2013-09-28T07:02:18.077 回答