Android中怎么測量文字寬度,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
站在用戶的角度思考問題,與客戶深入溝通,找到廣昌網(wǎng)站設(shè)計(jì)與廣昌網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋廣昌地區(qū)。什么是絕對文本呢?
就是指那些字號(hào)、字體、粗細(xì)等屬性不受在所運(yùn)行的硬件設(shè)備上的 Android 系統(tǒng)的配置所影響文本。例如:自定義View時(shí)通過Canvas繪制出來的文本;
而相對文本在使用上就廣泛很多了。例如直接用 TextView 展示的文本、網(wǎng)頁上的文本、手機(jī)短信內(nèi)容文本等。相對文本在字號(hào)、字體、粗細(xì)程度上除了受應(yīng)用開發(fā)時(shí)的配置影響以外還會(huì)間接地受到系統(tǒng)設(shè)置的影響。例如在 Android 的系統(tǒng)設(shè)置 -- 顯示 -- 字體大小 中的配置就會(huì)間接地影響到相對文本的顯示效果。
這篇博文,就來記錄一下這兩種文本的測量長度的方法。
1、絕對文本長度的測量
絕對文本為了避免被系統(tǒng)配置影響到,通常都不使用 Android 自帶的控件來繪制文本。
比較常見的繪制文本的方式是通過 Canvas 的 drawText() 方法。
絕對文本的長度的測量通常是借助 Paint 來完成的,代碼也很簡單:
final String txt = "冠狀病毒是自然界廣泛存在的病毒,因該病毒形態(tài)在電鏡下觀察類似王冠而得名。";Paint paint = new Paint();paint.setTextSize(15);float length = paint.measureText(txt);Logger.d(TAG, "txt length:" + length);
這種測量方式得到的結(jié)果值是不隨系統(tǒng)顯示字號(hào)的改變而改變的。
2、相對文本長度的測量
最簡單的測量這種隨系統(tǒng)配置而改變屬性的文本的長度的方法就是借助于 Android 自身控件。這里貼出一種直接用 TextView 控件來測量的辦法:
final String txt = "冠狀病毒是自然界廣泛存在的病毒,因該病毒形態(tài)在電鏡下觀察類似王冠而得名。";TextView tv = new TextView(this);tv.setTextSize(16);tv.setText(txt);TextPaint tp = tv.getPaint();float length = Layout.getDesiredWidth(tv.getText().toString(), 0, tv.getText().length(), tp);Logger.d(TAG, "txt length:" + length);Logger.d(TAG, "screen width:" + ScannerApplication.getInstance().getHardware().getAppWidth());((FrameLayout)layout).addView(tv);
這種方法里同樣的字符串內(nèi)容與 TextView 配置,卻可以動(dòng)態(tài)地根據(jù)系統(tǒng)的字體設(shè)置來測量文本長度。以下是同一段代碼中在系統(tǒng)設(shè)置中將字體大小分別設(shè)置為小、普通與超大時(shí)的測量結(jié)果:
系統(tǒng)字體為小號(hào)時(shí)的測量結(jié)果:
Activity: txt length:720.0Activity: screen width:720
系統(tǒng)字體為普通時(shí)的測量結(jié)果:
Activity: txt length:864.0Activity: screen width:720
系統(tǒng)字體為超大時(shí)的測量結(jié)果:
Activity: txt length:1116.0Activity: screen width:720
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。