java settext color_如何在Kotlin for Android上使用“setTextColor(hexaValue)”,

背景

在Java中,我可以使用它的标准六进制十进制值直接更改TextView的文本颜色:

textView.setTextColor(0xffffffff); //white

textView.setTextColor(0x00000000); //transparent

textView.setTextColor(0xff000000); //black

textView.setTextColor(0xff0000ff); //blue

//etc...

很容易...

问题

在Kotlin上,如果我尝试编写这样的东西,我会遇到一个奇怪的构建错误:

错误:(15,18)以下函数都不能使用提供的参数调用:public open fun setTextColor(p0:ColorStateList!):在android.widget.TextView中定义的单元public open fun setTextColor(p0:Int):单元在android.widget.TextView中定义

我尝试过的

我试图通过互联网搜索这个,我看不出六进制十进制值有什么特别之处 . 在Java上看似相同:

然后我决定用Java编写,然后转换为Kotlin . 结果在颜色值方面非常难以理解:

textView.setTextColor(-0x1) //white

textView.setTextColor(0x00000000) //transparent

textView.setTextColor(-0x1000000) //black

textView.setTextColor(-0xffff01) //blue

对我来说,似乎用于Kotlin的Integer的十六进制值是有符号的,而在Java上它会自动转换为有符号的值,因此这会导致值的翻转以及需要时设置减号的需要 .

我唯一能想到的,仍然可以读得很好,是这样的:

textView.setTextColor(Integer.parseUnsignedInt("ffff0000",16));

但是,这有许多缺点:

时间更长了 .

它转换一个字符串,因此效率低得多

最重要的是:它仅适用于API 26(Android O),目前在全球约1%的Android设备上有效 .

问题

它为什么会发生?

我究竟能做些什么来使其最具可读性,没有字符串转换,并适用于所有Android版本(在我的情况下为minSdkVersion 14)?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值