Android獲取TextView顯示的字串寬度

2021-09-07 01:28:35 字數 901 閱讀 7645

工作上有業務需要判斷textview是否換行,我的做法是判斷textview要顯示的字串的寬度是否超過我設定的寬度,若超過則會執行換行。

專案中的其他地方也有這樣的需求,故直接使用了那一塊的**。如下

public float gettextwidth(context context, string text, int textsize)

這裡是使用了textpaint的measuretext方法。

不過在專案實踐上發現了這個方法存在一些問題。當字串存在字母數字時,就會有1-2畫素的誤差。也正是這個誤差,導致**上判斷換行錯誤,使得介面上顯示出錯。

為了解決這個問題,搜到了這篇文章 戳我

這篇文章中使用了另外乙個方法測量,沒有new textpaint,而是使用了textview自己的textpaint,這個paint通過textview.getpaint()方法獲得。

最後給出乙個例子來看這兩種方法的差別。

測試機是mi4,xxdpi

**如下

public class mainactivity extends activity

}當測試字串為: 「測試中文」時,結果如下

測試字串:測試中文

getmeasuredwidth:180

measuretext:180.0

getpaint measuretext:180.0

當測試字串為: 「測試英文abcd」時,

測試字串:測試英文abcd

getmeasuredwidth:279

newpaint measuretext:278.0

textview getpaint measuretext:279.0

可見使用textview的textpaint呼叫measuretext方法得到的寬度才是真正的寬度。

android 自定義控制項繼承TextView

在原生控制項上進行擴充套件,增加新的功能 一般是在ondraw 方法中對原生控制項進行擴充套件 下面以乙個textview 為例,來看看如何使用擴充套件原生控制項的方法建立新的控制項 對現有控制項進行擴充套件 public class m textview extends textview publ...

Android 使用者介面設計之TextView

2.文字的鏈結 將文字中的 號碼,email url layout 中的xml 檔案中進行新增 另一種是在 activity 的oncreate 方法中新增 xml檔案設定 all,map,none,email,phone 以及web 在這我們以設定為 phone 為例。號碼不是尚矽谷老師的,隨便編...

Android 使用者介面設計之TextView

5.富文字 先說一下什麼是富文字,富文字就是對文字中一些特殊文字或者的特殊顯示。例如我們我們發一段話 你還沒有還我 100塊錢。這句話我們要強調 100塊錢 這是後我們可以把它顯示為特殊的顏色,這其實就是一種富文字。有時候我們 qq聊天經常發表情,其實這也是一種富文字。富文字,可以支援一部分的 ht...