亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android獲取文字高度的三種方法

 更新時間:2021年01月05日 09:50:57   作者:muboluo  
這篇文章主要給大家介紹了Android獲取文字高度的三種方法,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

本文是對獲取文字高度整理和總結(jié),參考資料源自 statcoverflow的一個回答。具體參看下面的參考鏈接

獲取文字高度的三個方法

  • 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 : 被測量的文字
  • start: 被測量文字的起始位置
  • end: 被測量文字的終止位置,最大為文字的長度
  • rounds: 被測量文字

功能解釋

如果我們想要獲取一段string的精確高度,我們可以通過 paint.getTextBounds()方法來實現(xiàn)。

精確高度是指什么?舉例來說,下面的 Happy new year 這幾個文字中,三個單詞的高度是不同的。

高度等于最上面一個像素減去最下面一個像素的高度。

所以,三者的高度是不同的。如何獲取這三個高度呢?就是通過 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 就是我們目標文字的最終高度。

但是需要注意的是,上面的到的Happy, new, year 這三個單詞的高度是不同的。

如果我們想將上面三個單詞處理成同一個高度,該怎么辦呢?

2 paint.getFontMetrics()

功能解釋

paint.getFontMetrics() 幫助我們獲取一段文字中字體的高度,注意這里說的是字體。使用這個方法,獲取一段文字的高度都是相同的。

這里,fm中幾個屬性需要注意一下 我們先來看下面這張圖。注意圖中的 line1 line2 line3

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

Ascent的值 和 Decent的值都是相對于baseLine而言的。從baseLine出發(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

參考資料:stackoverflow.com/questions/3

相關(guān)文章

最新評論