繁体   English   中英

Android 10 (API 29) 升级后 setColor 不起作用

[英]setColor not working after Android 10 (API 29) upgrade

我的代码

paint.setColor(0xFFFFFFFF);

在升级到 Android 10 之前成功运行。现在它抛出一个错误:

包装的 java.lang.IllegalArgumentException: 无效 ID,必须在 [0..16) 范围内

(看起来错误信息被修剪了)

尽管如此,

paint.setARGB(255,255,255,255);

工作正常。

我读过从 API 29 开始,setColor 也接受长颜色值,我试着明确地把

paint.setColor(parseInt(0xFFFFFFFF));

或者

paint.setColor(valueOf(0xFFFFFFFF));

但他们都没有工作......

有关如何使用 setColor 的任何解决方案? ARGB 并不总是对我有用(例如无法通过指定 ARGB 创建渐变)。

你可以用演员来解决这个问题:

paint.setColor((int)0xFFFFFFFF);

...虽然我无法在我自己的机器上重现这种行为... 0xFFFFFFFF 总是被解释为一个int (即使它超出范围,严格来说)。 不确定为什么您的编译器选择setColor(long)覆盖。

也许你应该试试这个。

        paint.setColor(ContextCompat.getColor(YourActivity.this,R.color.colorPrimary));

参数值被视为长数,因此无法计算颜色空间。 有两个不同的函数,valueOf(int) 和 valueOf(long)。 只需转换为 int 即可使用标准 int 值。

valueOf(0xFFFFFFFF.toInt())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM