Android ellipsize的小問題介紹

來源:互聯網
上載者:User

使用TextView的時候,需要長度過長自動顯示省略符號,android裡有原生的支援,定義如下: 複製代碼 代碼如下:<TextView ...
android:ellipsize="end"
android:singleLine="true"/>

一看確實可以使用,但仔細觀察,發現在省略符號…的後面有一個方框,類似於出現亂碼那種字元,這是為什麼呢?

原來android裡的ellipsize在處理字串的時候,如果發現字串超長,便會把最後一個字元替換為…,不是三個點,而是字型內建的省略符號。不管用什麼字型,都需要支援這個省略符號才能正確顯示。APP使用的字型是Mercedes,它支援省略符號顯示,這裡沒有問題。問題在於android在處理ellipsize的時候,把一個字元替換為…,把剩下截斷的其他字元替換為Unicode的字元“ZERO WIDTH NO-BREAK SPACE” (U+FEFF),這個字元在螢幕上並不會顯示出來,但它仍是字串的一部分。

問題原來出在這裡,使用的Mercedes字型不支援這個特殊字元U+FEFF的顯示,所以才會出現亂碼。解決的方法也很簡單,編輯字型檔,把U+FEFF這個字元的寬度設為0。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.