欧美三级电影完整|亚洲一二三四久久|性爱视频精品一区二区免费在线观看|国产精品啪啪视频|婷婷六月综合操人妻视频网站|99爱免费视频在线观看|美女一级片在线观看|北京熟女88av|免费看黄色A级电影|欧美黄色毛片儿

android StaticLayout 完美契合TextView

2023-04-12


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