如果我知道该颜色的十六进制颜色,我需要知道如何获取该颜色的代码。
<string name="name">Asavbasb <font fgcolor="#33b5e5">look</font></string>
这是我的十六进制颜色代码#33b5e5,但如果我在 中使用它fgcolor="33b5e5"
,选定的文本是白色而不是蓝色,所以我的问题是如何获得该前景色的代码?
如果我知道该颜色的十六进制颜色,我需要知道如何获取该颜色的代码。
<string name="name">Asavbasb <font fgcolor="#33b5e5">look</font></string>
这是我的十六进制颜色代码#33b5e5,但如果我在 中使用它fgcolor="33b5e5"
,选定的文本是白色而不是蓝色,所以我的问题是如何获得该前景色的代码?
您是否尝试将颜色更改为fgcolor="#ff33b5e5"
?
我认为使用 Android 内嵌颜色,您需要声明 alpha 通道。
而不是上面,你为什么不使用fromHTML功能?
就像是:
myTextView.setText(Html.fromHtml("Asavbasb <font fgcolor='#33b5e5'>look</font>"));
或者如果你真的需要颜色代码,你可以用Color.parseColor(String);
这是从十六进制字符串创建颜色并将其影响到的方法TextView
:
final int color = Color.parseColor("#33b5e5");
final TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(color);
在 4.x 之前,您可以这样做:
<string name="error"><font fgcolor="#ff33b5e5">Error!</font></string>
但是,错误https://code.google.com/p/android/issues/detail?id=58192破坏了此功能,因为它引入了一个整数解析器,该解析器无法处理具有最高位集的数字,不幸的是你可以' t 省略颜色的不透明度部分(大多数人更愿意将其设置为 ff,如本例所示。)
我昨天才学会了一个聪明的解决方法。你所做的是否定二进制补码中的十六进制颜色值。你如何做到这一点取决于你的十六进制计算器,但最简单的方法是从 0x100000000 中减去你的颜色。在您的情况下,这将导致 0x100000000 - 0xff33b5e5 = 0xcc4a1b。(或者您可以将其反转,例如 00cc4a1a 足够接近)。然后你用减号再次否定它:
<string name="error"><font fgcolor="-#cc4a1b">Error!</font></string>
瞧!你有你想要的颜色。
感谢 TWiStErRob 在https://stackoverflow.com/a/11577658/338479中解决这个问题
ETA:我刚刚发现如果您在 2.x 系统上执行此操作会使您的应用程序崩溃;它抛出一个 NumberFormat 异常