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





