0

如果我知道该颜色的十六进制颜色,我需要知道如何获取该颜色的代码。

<string name="name">Asavbasb <font fgcolor="#33b5e5">look</font></string>

这是我的十六进制颜色代码#33b5e5,但如果我在 中使用它fgcolor="33b5e5",选定的文本是白色而不是蓝色,所以我的问题是如何获得该前景色的代码?

4

4 回答 4

1

您是否尝试将颜色更改为fgcolor="#ff33b5e5"

我认为使用 Android 内嵌颜色,您需要声明 alpha 通道。

于 2014-01-28T18:11:26.683 回答
1

而不是上面,你为什么不使用fromHTML功能?

就像是:

myTextView.setText(Html.fromHtml("Asavbasb <font fgcolor='#33b5e5'>look</font>"));

或者如果你真的需要颜色代码,你可以用Color.parseColor(String);

于 2013-06-11T17:44:35.213 回答
0

这是从十六进制字符串创建颜色并将其影响到的方法TextView

final int color = Color.parseColor("#33b5e5");
final TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(color);
于 2013-06-11T19:09:28.513 回答
0

在 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 异常

于 2015-07-27T15:13:04.680 回答