2011-06-09 138 views
0

我想顯示一個TextView的\u25BA unicode character,但這樣做Unicode字符0x25BA不會顯示在Android

<TextView android:id="@+id/arrowright" android:layout_width="20dp" 
     android:layout_height="240dp" android:gravity="center" android:text="\u25BA" 
     android:textSize="14sp" android:textColor="#000000" /> 

只顯示一個空矩形。這適用於其他字符,如「\ u2605」。

android可以顯示的字符集是有限的嗎?

+4

**任何設備**可以顯示的字符集是有限的:如果沒有具有指定字形的字體,則無法顯示它。 **沒有字體**提供**整個** Unicode規範的完整覆蓋。 – 2011-06-09 11:33:02

+0

但是有可能以編程方式測試特定字符是否可以通過給定字體顯示? – Patrick 2011-06-09 11:40:25

+0

@帕特里克:這是可能的,在Android之外(或與一個紮根Android)。您基本上打開字體文件(它是OpenType)並根據OpenType規範(http://www.microsoft.com/typography/otspec/)解釋表格。例如,這是這個工具的功能:http://mihai-nita.net/2007/09/08/charmapex-some-kind-of-character-map/。 (當然,還有大量的應用程序直接編輯字體:-) – 2011-06-23 09:13:59

回答

4

XML不允許您使用\u Unicode轉義符,使用正確的編碼,可能是UTF-8或使用&...;轉義轉義。

是的,字符受當前Font支持的限制。使用字體瀏覽器來檢查是否支持所需的字符。

+0

我可以設置'android:text =「\ u2605」',並正確顯示相應的unicode字符。我如何知道使用哪種字體,以及如何設置它? – jul 2011-06-09 13:11:36

+0

請參閱下面的答案。我相信最實用的方法是讓您的智能手機隨Android版中的可能值列表一起準備好。查看我提到的應用程序。 – davidcesarino 2011-06-09 13:42:42

1

嘗試在市場上下載Unicode Map,並在開發時保持方便。它使用\uXXXX表示法。最後,如sorin所說,請記住(如果您還沒有)\uXXXX(兩個十六進制字節)似乎只在strings.xml中工作(並使用@string/string_name格式導入到佈局中)。或者至少它似乎不適用於所有SDK或所有環境(這裏,我剛剛在SDK 2.2上進行了測試,並且確實而不是工作)。爲了避免麻煩(字符串中間的字符等),我不這樣做。

由於大多數人從來沒有硬編碼直接XML佈局的字符串(本地化問題等),通常是沒有問題的(這就是爲什麼我用這個格式)。另外,正如你在上面的應用中看到的,這似乎是在Android中轉義小於平凡字符的首選方式。

就個人而言,我認爲這就是爲什麼我沒有看到使用&#int;很多人,我猜...

希望這有助於!

+0

順便說一句,我*不*該應用程序的作者。 – davidcesarino 2011-06-09 13:44:45