2016-02-29 137 views
1

我通过设置一些unicode星号来以编程方式向TextView添加评级。这是unicode明星\u22C6,但TextView在启动应用程序时向我显示此字符:\u22A0Android:TextView,unicode字符显示不正确

这是我如何创建它:

private CharSequence calculatedSelectedRating(Integer rating) 
{ 
    StringBuffer stringBuffer = new StringBuffer(); 

    //Star is ⋆ or \u22C6 
    for (int i = 0; i < rating; i++) 
    { 
     stringBuffer.append('\u22C6'); 
    } 

    return stringBuffer.toString(); 
} 

,结果就是我在TextView设置由setText(...)方法。

任何想法为什么会出现这种差异?

+0

'用于char',用于字符串;) –

+0

@MuhammadFarrukhFaizy'''是正确的,因为我添加了单个字符,unicode编码 – Bevor

回答

2

某些字体不支持某些字符。检查您的消息是否显示为其他字体;包括你的资产文件夹中的文件TTF,并且用类似设置与字体TextView的内容:

yourTextView=(TextView)findViewById(R.id.idOfYourTextView); 
Typeface font= Typeface.createFromAsset(getAssets(), "The_Font.TTF"); 
yourTextView.setTypeface(font); 

希望它能帮助。

+0

You显然Android不支持所有的Unicode字符,argh,那么我需要使用不同的图形或者图形,但奇怪的是,它在另一个视图中起作用,也许还有其他一些问题,但基本上它有处理字体 – Bevor

+0

UPDATE:没有其他问题。另一方面,我使用Android支持的默认星号。所以这是Android缺省字体中缺少字符的问题。 – Bevor

+0

太好了。我在想它会是什么。 –

0

尝试使用"代替'

stringBuffer.append("\u22C6"); 
+0

这不起作用,结果相同我们谈论的是unicode字符,而不是一个字符串 – Bevor

+0

如果这个Unicode是*,那么它的工作 –

0

在你的TextView,你可以使用HTML格式设置文本。做类似这样的事情

mTextView.setText(Html.fromHtml(text)); 
+0

这是一个很好的解决方法,但不幸的是我有相同的错误结果(我通过字符作为html符号'⋆'并将返回类型改为String) – Bevor