Android 如何从十六进制颜色中获取前景色?

Android 如何从十六进制颜色中获取前景色?,android,string,colors,hex,foreground,Android,String,Colors,Hex,Foreground,如果我知道前景颜色的十六进制颜色,我需要知道如何获取该颜色的代码 <string name="name">Asavbasb <font fgcolor="#33b5e5">look</font></string> Asavbasb外观 这是我的十六进制颜色代码#33b5e5,但是如果我在fgcolor=“33b5e5”中使用它,所选文本是白色而不是蓝色,所以我的问题是如何获得前景颜色的代码?而不是上面,为什么不使用该功能 比如: myTextV

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

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

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

而不是上面,为什么不使用该功能

比如:

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

或者,如果您真的需要颜色代码,您可以通过

获得它。这就是如何从十六进制字符串创建颜色并将其影响到
文本视图的方法:

final int color = Color.parseColor("#33b5e5");
final TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(color);

您是否尝试过将颜色更改为
fgcolor=“#ff33b5e5”


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

在4.x之前,您可以这样做:

<string name="error"><font fgcolor="#ff33b5e5">Error!</font></string>
错误!
然而,bug破坏了这一功能,因为它引入了一个整数解析器,无法处理具有最高位集的数字,不幸的是,您不能忽略颜色的不透明度部分(大多数人更喜欢在本例中设置为ff)

我昨天刚刚学会了一个巧妙的变通方法。你要做的是在二的补码中否定十六进制颜色值。如何执行此操作取决于十六进制计算器,但最简单的方法是从0x100000000中减去颜色。在您的情况下,这将导致0x100000000-0xff33b5e5=0xcc4a1b。(或者您可以将其反转,例如00cc4a1a,这将足够接近)。然后用减号再次对其求反:

<string name="error"><font fgcolor="-#cc4a1b">Error!</font></string>
错误!
瞧!你有你想要的颜色

多谢TWiStErRob在


ETA:我刚刚发现,如果你在2.x系统上运行,这会使你的应用程序崩溃;它抛出一个NumberFormat异常

你所说的颜色是指前景还是背景。。十六进制颜色代码是颜色的代码。您想要红色、绿色、蓝色的组合吗?不,我需要更改字符串(文本)的颜色。您可以在标记中看到它,但只有选项fgcolor,我的十六进制代码#33b5e5表示蓝色,但如果我在fgcolor中使用该代码,我的字符串(文本)是白色而不是蓝色。例如,如果我使用的文本是红色,但我需要在十六进制颜色代码#33b5e5中使文本为蓝色。您不理解我的问题,问题是,我需要知道如何获取此十六进制颜色代码的fgcolor代码:#33b5e5。因为如果我使用fgcolor='#33b5e5',我的文本应该是蓝色的,但是相反,文本是白色的,我不明白为什么。用add of Color.parsecolor更新了答案不幸的是,这在4.x中中断了。请参阅中TWiStErRob的解释和解决方法