2016-04-19 102 views
2

'from this維基百科的鏈接我得到了紅色的心臟的代碼,並希望在我的TextView中顯示用於生成自定義表情符號,但爲什麼它總是顯示黑色insted的紅色U + 2665的顏色在維基百科中明確表示爲紅色。下面是我的代碼如何在TextView中更改unicode字符的顏色?

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

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



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

不使它紅色它仍然是黑色的,它顯示爲紅色,如果我把其他任何文字。

+0

字體沒有關於顏色的信息...他們總是在字體的顏色顏色 – Selvin

+0

我想你只需要改變文本顏色:Html.fromHtml(「 \ u2665」 ) – Christopher

+0

http://stackoverflow.com/questions/28368856/how-to-convert-string-into-unicode-in-android/28369713#28369713 –

回答

1

要使它成爲紅色,您必須將其設置爲textColor RED。像這樣 - >

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

將您unicodeHexadecimal &這樣使用它。 tv.setText(Html.fromHtml("&#x2665;"));

查看我的answer瞭解更多信息。

0

你也被設置在XML文件中的顏色在文本視圖如..

<TextView 
      android:id="@+id/tv_id" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_margin="@dimen/margin_5" 
      android:textColor="@color/white" 
/> 

和Java文件設置文本定製表情符號其做工精細。

+0

@theUtrun它不需要將unicode更改爲十六進制。 –

2

說明: TextView的字體呈現此作爲一個表情符號,這意味着它basicly使用預定義的圖像,所以字體顏色是在這些忽略。有一個可以用作後綴的unicode字符,告訴字體使用文本變體(VARIATION SELECTOR 15,「\ uFE0E」,用法如下:「\ u2665 \ uFE0E」),但顯然Android會忽略這些,至少在我的手機(三星SM-G800F與5.1.1)

股票瀏覽器和鉻也無法識別變種選擇器,而Android的Firefox適用於我的手機。

顯然,這是不同的防空火炮的電話,您可以在related question on Stackexchange UX


解決方案請參見: 什麼解決了這個問題對我來說,手動設定另一個TTF字體TextView的,支持這些字符但不是emojis,即來自GNU FreeFont Project的FreeSans。

下載字體並將其放入src/assets/fonts中。 然後設置你的TextView的字體:

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

你應該字樣propably加載到一個靜態常量,避免一遍又一遍地重新創建它。

+0

該字體在7.0版本的S8 +上不起作用(默認爲Roboto)。任何其他沒有表情符號的字體? –

相關問題