android StaticLayout 完美契合TextView
1.StaticLayout
從名字可以看出,它是一個(gè)靜態(tài)布局??梢宰鳛槎ㄎ恍凶址部梢宰鳛閾Q行工具使用
1.1 換行工具:
我在們自定義一個(gè)TextView,會(huì)發(fā)現(xiàn)文字太長(zhǎng),并不會(huì)自動(dòng)換行,而是只顯示了一部分,這樣就很尷尬。但是如果配合staticLayout江會(huì)完美決絕:
TextPaint textPaint=new TextPaint(Paint.ANTI_ALIAS_FLAG);
textPaint.setColor(Color.RED);
textPaint.setStyle(Paint.Style.FILL);
textPaint.setTextSize(50);
String text="在Android開(kāi)發(fā)中,Canvas.drawText不會(huì)換行,StaticLayout 處理了文字換行的問(wèn)題";
staticLayout=new StaticLayout(text, textPaint, canvas.getWidth(), Layout.Alignment.ALIGN_NORMAL, 1.0f,0.0f , false);
staticLayout.draw(canvas);
1.2.定位一行多少個(gè)字符和多少行。配合SpannableString。
我們使用SpannableString進(jìn)行組合的時(shí)候,會(huì)發(fā)現(xiàn),SpannableString很多數(shù)據(jù)和TextView會(huì)有沖突,如果我們想設(shè)置超過(guò)多長(zhǎng)后面開(kāi)始設(shè)置省略號(hào)需要計(jì)算:當(dāng)前文字是多少行,每一行顯示多少個(gè)字符。這樣我們就可以通過(guò)staticLayout來(lái)獲取。
如何使用:
StaticLayout layout=new StaticLayout(String content,Paint paint,float width,int Alignment,float spacingmult,float spacingadd,boolean includepad);
content:需要顯示的內(nèi)容
paint:text.getPaint();當(dāng)前TextView的paint()
width:當(dāng)前textView的寬。
spacingmult 相對(duì)行間距 默認(rèn)1.0f
spacingadd:間距默認(rèn)為0.
includepad:是指是否在文字上下添加額外的空間,來(lái)避免某些過(guò)高的字符的繪制出現(xiàn)越界,一般false多。
本文僅代表作者觀點(diǎn),版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請(qǐng)?jiān)谖闹凶⒚鱽?lái)源及作者名字。
免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)及時(shí)與我們聯(lián)系進(jìn)行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com






