Android獲取文字高度的三種方法
前言
本文是對(duì)獲取文字高度整理和總結(jié),參考資料源自 statcoverflow的一個(gè)回答。具體參看下面的參考鏈接
獲取文字高度的三個(gè)方法
- paint.getTextBounds(String text, int start, int end, Rect bounds)
- paint.getFontMetrics()
- StaticLayout
1 paint.getTextBounds(String text, int start, int end, Rect bounds)
參數(shù)解釋
- text : 被測(cè)量的文字
- start: 被測(cè)量文字的起始位置
- end: 被測(cè)量文字的終止位置,最大為文字的長(zhǎng)度
- rounds: 被測(cè)量文字
功能解釋
如果我們想要獲取一段string的精確高度,我們可以通過 paint.getTextBounds()方法來(lái)實(shí)現(xiàn)。
精確高度是指什么?舉例來(lái)說(shuō),下面的 Happy new year 這幾個(gè)文字中,三個(gè)單詞的高度是不同的。
高度等于最上面一個(gè)像素減去最下面一個(gè)像素的高度。

所以,三者的高度是不同的。如何獲取這三個(gè)高度呢?就是通過 paint.getTextBounds()方法。
String temp = "Happy"; //被獲取的文字 Rect rect = new Rect(); Paint paint = new Paint(); paint.getTextBounds(temp, 0, temp.length(), rect); int height = rect.height();
得到的height 就是我們目標(biāo)文字的最終高度。
但是需要注意的是,上面的到的Happy, new, year 這三個(gè)單詞的高度是不同的。
如果我們想將上面三個(gè)單詞處理成同一個(gè)高度,該怎么辦呢?
2 paint.getFontMetrics()
功能解釋
paint.getFontMetrics() 幫助我們獲取一段文字中字體的高度,注意這里說(shuō)的是字體。使用這個(gè)方法,獲取一段文字的高度都是相同的。
這里,fm中幾個(gè)屬性需要注意一下 我們先來(lái)看下面這張圖。注意圖中的 line1 line2 line3

其中 line 1 表示 Ascent;line2 表示baseline;line3 表示 Decent。 下面的截圖中是我在一個(gè)demo中獲取的一段文字的高度。

Ascent的值 和 Decent的值都是相對(duì)于baseLine而言的。從baseLine出發(fā),向上為負(fù),向下為正。
demo代碼如下:
Paint paint = new Paint(); Paint.FontMetrics fm = paint.getFontMetrics(); float height1 = fm.descent - fm.ascent; float height2 = fm.bottom - fm.top + fm.leading;
其中 height1 表示文字的高度, height2表示行高。注意這兩者的區(qū)別。fm.leading 表示行間距。
總結(jié)
到此這篇關(guān)于Android獲取文字高度的三種方法的文章就介紹到這了,更多相關(guān)Android獲取文字高度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
參考資料:stackoverflow.com/questions/3…
- Android8.1原生系統(tǒng)網(wǎng)絡(luò)感嘆號(hào)消除的方法
- Android開發(fā)實(shí)現(xiàn)消除屏幕鎖的方法
- Android實(shí)現(xiàn)文字動(dòng)態(tài)高亮讀取進(jìn)度效果
- Android 實(shí)現(xiàn)文字左右對(duì)齊
- Android基于AdapterViewFlipper實(shí)現(xiàn)的圖片/文字輪播動(dòng)畫控件
- Android Button按鈕點(diǎn)擊背景和文字變化操作
- Android實(shí)現(xiàn)文字滾動(dòng)播放效果的代碼
- Android實(shí)現(xiàn)文字下方加橫線
- android命令行模擬輸入事件(文字、按鍵、觸摸等)
- Android實(shí)現(xiàn)文字消除效果
相關(guān)文章
Android編程實(shí)現(xiàn)震動(dòng)與振鈴的方法詳解
這篇文章主要介紹了Android編程實(shí)現(xiàn)震動(dòng)與振鈴的方法,結(jié)合實(shí)例形式分析了Android實(shí)現(xiàn)震動(dòng)與振鈴的Vibrator類及MediaPlayer類相關(guān)使用技巧,需要的朋友可以參考下2018-03-03
Android實(shí)現(xiàn)文件壓縮與解壓工具類
這篇文章主要為大家詳細(xì)介紹了如何使用Android實(shí)現(xiàn)一個(gè)文件壓縮與解壓工具類,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
android獲取情景模式和鈴聲 實(shí)現(xiàn)震動(dòng)、鈴聲提醒
這篇文章主要介紹了android獲取情景模式和鈴聲,實(shí)現(xiàn)震動(dòng)、鈴聲提醒,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
Flutter?Widget之NavigationBar使用詳解
這篇文章主要為大家介紹了Flutter?Widget之NavigationBar使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
Android 動(dòng)態(tài)的顯示時(shí)間
本文給大家分享一段代碼實(shí)現(xiàn)android動(dòng)態(tài)顯示時(shí)間,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2016-12-12
解析Android獲取系統(tǒng)cpu信息,內(nèi)存,版本,電量等信息的方法詳解
本篇文章對(duì)用Android獲取系統(tǒng)cpu信息,內(nèi)存,版本,電量等信息的方法進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05
Android啟動(dòng)初始化方案App StartUp的應(yīng)用詳解
這篇文章主要介紹了Android啟動(dòng)初始化方案App StartUp的使用方法,StartUp是為了App的啟動(dòng)提供的一套簡(jiǎn)單、高效的初始化方案,下面我們來(lái)詳細(xì)了解2022-09-09
OpenGL中的glutInitDisplayMode()函數(shù)的理解
今天小編就為大家分享一篇關(guān)于OpenGL中的glutInitDisplayMode()函數(shù)的理解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04

