博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发之TextView排版问题
阅读量:6815 次
发布时间:2019-06-26

本文共 1904 字,大约阅读时间需要 6 分钟。

下面直接是关于解决该问题的代码(根据别人的代码进行了修正以及测试,保证可以修改字体尺寸、颜色、根据padding调整,如果需要支持其他的格式可以将对应的属性添加至Paint类型的对象中):

 
1 public class NsTextView extends TextView { 2     private String text; 3     private float textSize; 4     private float paddingLeft; 5     private float paddingRight; 6     private int textColor; 7     private Paint paint1 = new Paint(); 8     private float textShowWidth; 9 10     public NsTextView(Context context, AttributeSet attrs) {11         super(context, attrs);12         text = this.getText().toString();13         textSize = this.getTextSize();14         textColor = this.getTextColors().getDefaultColor();15         paddingLeft = this.getPaddingLeft();16         paddingRight = this.getPaddingRight();17         paint1.setTextSize(textSize);18         paint1.setColor(textColor);19         paint1.setAntiAlias(true);20     }21 22     @Override23     protected void onDraw(Canvas canvas) {24         textShowWidth = this.getMeasuredWidth() - paddingLeft - paddingRight;25         int lineCount = 0;26         text = this.getText().toString();27         if (text == null)28             return;29         char[] textCharArray = text.toCharArray();30         float drawedWidth = 0;31         float charWidth;32         for (int i = 0; i < textCharArray.length; i++) {33             charWidth = paint1.measureText(textCharArray, i, 1);34             if (textCharArray[i] == '\n') {35                 lineCount++;36                 drawedWidth = 0;37                 continue;38             }39             if (textShowWidth - drawedWidth < charWidth) {40                 lineCount++;41                 drawedWidth = 0;42             }43             canvas.drawText(textCharArray, i, 1, paddingLeft + drawedWidth,44                     (lineCount + 1) * textSize, paint1);45             drawedWidth += charWidth;46         }47         setHeight((int) ((lineCount + 1) * (int) textSize ));48     }49 }

转载地址:http://asbzl.baihongyu.com/

你可能感兴趣的文章
Android事件分发机制初探
查看>>
CF1030E Vasya and Good Sequences
查看>>
jzoj5683. 【GDSOI2018模拟4.22】Prime (Min_25筛+拉格朗日插值+主席树)
查看>>
洛谷P1850 换教室(概率dp)
查看>>
ASP.NET拾遗 - Health Monitoring
查看>>
Handler
查看>>
移动端APP meta标签
查看>>
使用webpack 进行ES6开发
查看>>
VS 断点不会命中的情况
查看>>
通用类 Js 显示消息提示对话框,不输出页面内容,并返回上一页
查看>>
格式化字符串
查看>>
Oracle通过SQL语句查看table所引用的对象(View/Function/Procedure/Trigger)
查看>>
jenkins权限配置不对导致jenkins无法登陆
查看>>
java 向上转型与向下转型
查看>>
4.11搭建网站的两个小问题
查看>>
Java知多少(44)异常类型
查看>>
什么是Servlet?它有哪些特点
查看>>
BZOJ 1497 [NOI2006]最大获利
查看>>
深入浅出KNN算法(二) sklearn KNN实践
查看>>
github上face_recognition工程项目实践
查看>>