Android ellipsize的小問題介紹
更新時(shí)間:2012年11月15日 17:30:18 作者:
使用TextView的時(shí)候,需要長度過長自動(dòng)顯示省略號(hào),android里有原生的支持,本文將針對(duì)此問題進(jìn)行深入剖析,需要的朋友可以參考
使用TextView的時(shí)候,需要長度過長自動(dòng)顯示省略號(hào),android里有原生的支持,定義如下:
<TextView ...
android:ellipsize="end"
android:singleLine="true"/>
一看確實(shí)可以使用,但仔細(xì)觀察,發(fā)現(xiàn)在省略號(hào)…的后面有一個(gè)方框,類似于出現(xiàn)亂碼那種字符,這是為什么呢?
原來android里的ellipsize在處理字符串的時(shí)候,如果發(fā)現(xiàn)字符串超長,便會(huì)把最后一個(gè)字符替換為…,不是三個(gè)點(diǎn),而是字體內(nèi)置的省略號(hào)。不管用什么字體,都需要支持這個(gè)省略號(hào)才能正確顯示。APP使用的字體是Mercedes,它支持省略號(hào)顯示,這里沒有問題。問題在于android在處理ellipsize的時(shí)候,把一個(gè)字符替換為…,把剩下截?cái)嗟钠渌址鎿Q為Unicode的字符“ZERO WIDTH NO-BREAK SPACE” (U+FEFF),這個(gè)字符在屏幕上并不會(huì)顯示出來,但它仍是字符串的一部分。
問題原來出在這里,使用的Mercedes字體不支持這個(gè)特殊字符U+FEFF的顯示,所以才會(huì)出現(xiàn)亂碼。解決的方法也很簡單,編輯字體文件,把U+FEFF這個(gè)字符的寬度設(shè)為0。
復(fù)制代碼 代碼如下:
<TextView ...
android:ellipsize="end"
android:singleLine="true"/>
一看確實(shí)可以使用,但仔細(xì)觀察,發(fā)現(xiàn)在省略號(hào)…的后面有一個(gè)方框,類似于出現(xiàn)亂碼那種字符,這是為什么呢?
原來android里的ellipsize在處理字符串的時(shí)候,如果發(fā)現(xiàn)字符串超長,便會(huì)把最后一個(gè)字符替換為…,不是三個(gè)點(diǎn),而是字體內(nèi)置的省略號(hào)。不管用什么字體,都需要支持這個(gè)省略號(hào)才能正確顯示。APP使用的字體是Mercedes,它支持省略號(hào)顯示,這里沒有問題。問題在于android在處理ellipsize的時(shí)候,把一個(gè)字符替換為…,把剩下截?cái)嗟钠渌址鎿Q為Unicode的字符“ZERO WIDTH NO-BREAK SPACE” (U+FEFF),這個(gè)字符在屏幕上并不會(huì)顯示出來,但它仍是字符串的一部分。
問題原來出在這里,使用的Mercedes字體不支持這個(gè)特殊字符U+FEFF的顯示,所以才會(huì)出現(xiàn)亂碼。解決的方法也很簡單,編輯字體文件,把U+FEFF這個(gè)字符的寬度設(shè)為0。
相關(guān)文章
Android中可以作為Log開關(guān)的一些操作及安全性詳解
Android的調(diào)試好伙伴Log在調(diào)試時(shí)非常有用,基本可以看Log而無需單點(diǎn)調(diào)試,尤其對(duì)實(shí)時(shí)大數(shù)據(jù)量的設(shè)備調(diào)試尤其有效,下面這篇文章就來給大家詳細(xì)介紹關(guān)于Android中可以作為Log開關(guān)的一些操作及安全性的相關(guān)資料,需要的朋友可以參考下。2017-12-12
Android 圖像處理(類型轉(zhuǎn)換,比例縮放,倒影,圓角)的小例子
Android 圖像處理(類型轉(zhuǎn)換,比例縮放,倒影,圓角)的小例子,需要的朋友可以參考一下2013-05-05
Android View滑動(dòng)的實(shí)現(xiàn)分析示例
View滑動(dòng)是Android實(shí)現(xiàn)自定義控件的基礎(chǔ),同時(shí)在開發(fā)中難免會(huì)遇到View的滑動(dòng)處理,其實(shí)不管是那種滑動(dòng)方法,基本思路是類似的;當(dāng)點(diǎn)擊事件傳到View時(shí),系統(tǒng)記下觸摸點(diǎn)的坐標(biāo),手指移動(dòng)時(shí)系統(tǒng)記下移動(dòng)后的左邊并算出偏移量,通過偏移量來修改View的坐標(biāo)2022-08-08
Android SharePreferences與數(shù)據(jù)庫SQLite存儲(chǔ)實(shí)現(xiàn)方法介紹
這篇文章主要介紹了Android SharePreferences與數(shù)據(jù)庫SQLite用于存儲(chǔ)的具體實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-09-09
Android build.gradle版本名打包配置的方法
這篇文章主要介紹了Android build.gradle版本名打包配置的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02
Android Application存取公共數(shù)據(jù)的實(shí)例詳解
這篇文章主要介紹了Android Application存取公共數(shù)據(jù)的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07

