如何在TextView中更改unicode字符的颜色?

时间:2016-04-19 11:57:34

标签: android unicode textview

'来自维基百科的this链接我得到了红色的心脏代码,想要在我的TextView中显示生成自定义表情符号,但为什么它总是显示黑色的红色U + 2665的颜色在维基百科中清楚地标明了红色。下面是我的代码

  TextView tv=(TextView)findViewById(R.id.testText);

 //  tv.setText(Html.fromHtml("\u2665"));



tv.setText(Html.fromHtml("<font color='red'>"+"\u2665"+"</font>"));

没有变成红色它仍然是黑色的,如果我放了任何其他文字它会显示红色。

5 个答案:

答案 0 :(得分:2)

<强>说明: TextView字体将其渲染为表情符号,这意味着它基本上使用预定义的图像,因此字体颜色会被忽略。有一个可以用作后缀的unicode字符,告诉字体使用文本变体(VARIATION SELECTOR 15,&#34; \ uFE0E&#34;,使用如下:&#34; \ u2665 \ uFE0E&# 34;),但显然Android确实忽略了这些,至少在我的手机上(三星SM-G800F与5.1.1)

股票浏览器和Chrome也无法识别变体选择器,而Firefox for Android可以在我的手机上运行。

显然,这可能与手机不同,您可以在related question on Stackexchange UX

中看到

<强>解决方案: 是什么解决了我的问题,是手动设置另一个ttf字体到TextView,它支持这些字符但不支持表情符号,即GNU FreeFont Project中的FreeSans。

下载字体并将其放在src / assets / fonts中。 然后设置TextView的字体:

    Typeface type = Typeface.createFromAsset(getAssets(),"fonts/FreeSans.ttf");
    mTextView.setTypeface(type);

您应该将Typeface加载到静态常量中,以避免一遍又一遍地重新创建它。

答案 1 :(得分:1)

要使其成为红色,您必须将其设置为textColor RED。就像这样 - &gt;

TextView tv=(TextView)findViewById(R.id.testText);
tv.setText(Html.fromHtml("\u2665"));
tv.setTextColor(Color.RED); // Set color here

答案 2 :(得分:1)

将您的unicode转换为Hexadecimal&amp;像这样使用它。 tv.setText(Html.fromHtml("&#x2665;"));

查看我的answer了解详情。

答案 3 :(得分:0)

此外,您在文本视图中的xml文件中设置了颜色,如..

WHERE cod_produto LIKE '%' + @it_codigo + '%'

并在java文件中设置文本自定义表情符号,其工作正常。

答案 4 :(得分:0)

将代码\u2764用于红心

对我有用。