自定義 View -文字
本文記錄自定義View-繪制文字相關(guān) API 的使用赘方。
文字繪制方法
直接通過 Canvas 內(nèi)置 drawText()
繪制文字桩卵。
文字測量
文字測量有兩種方法荣刑。
調(diào)用
Paint.getTextBounds(String text, int start, int end, Rect bounds)
方法伺帘,測量結(jié)果存放在bounds
對象中卒密,對應(yīng)文字的上下左右邊界庇谆。調(diào)用
Paint.getFontMetrics()
岳掐,返回FontMetrics
對象。
FontMetrics
中有五條文字的基準(zhǔn)線饭耳,依次為:
-
top-line
: 可繪制區(qū)域最頂部的線 -
ascent-line
: 可繪制區(qū)域頂部的線串述,系統(tǒng)推薦的頂部位置, -
baseline
: 文字繪制的基線(在四線格上書寫英文字母時的第三條線) -
descent-line
: 可繪制區(qū)域底部的線,系統(tǒng)推薦的底部位置 -
bottom-line
: 可繪制區(qū)域最底部的線
對應(yīng) FontMetrics
中五個屬性值
top = Y(top-line) - Y(baseline)
ascent = Y(ascent-line) - Y(baseline)
descent = Y(descent-line) - Y(baseline)
bottom = Y(bottom-line) - Y(baseline)
leading
是系統(tǒng)推薦的行間隔寞肖。Paint.getTextBounds
通常用于靜態(tài)文字的測量剖煌,而Paint.getFontMetrics()
通常用于動態(tài)文字測量。
文字換行
文字換行用 Paint.breakText()
實(shí)現(xiàn)逝淹。breakText()
有幾種重載方法,基本用法大同小異桶唐。
文字對齊
簡單的文字對齊可使用 Paint.setTextAlign()
接口設(shè)置栅葡。
復(fù)雜的文字對齊需要計(jì)算文字的邊界值和繪制的起始點(diǎn),通常是結(jié)合 Paint.getTextBounds()
或 Paint.getFontMetrics()
測量屬性值做偏移計(jì)算尤泽,以具體項(xiàng)目為準(zhǔn)欣簇。