【TextView】自定义TextView中文换行排版问题修复
来源:互联网 发布:贵阳大数据就是吹牛 编辑:程序博客网 时间:2024/05/22 17:11
以下为解决排版核心代码
public class MyTextView extends TextView { private String text; private float textSize; private float paddingLeft; private float paddingRight; private float paddingTop; private float paddingBottom; private int textColor; private Paint paint1 = new Paint(); private float textShowWidth; private int lineSpace;//行间距 public MyTextView(Context context, AttributeSet attrs) { super(context, attrs); text = this.getText().toString(); textSize = this.getTextSize(); textColor = getResources().getColor(R.color.color_black_333333); paddingLeft = this.getPaddingLeft(); paddingRight = this.getPaddingRight(); paddingTop = this.getPaddingTop(); paddingBottom = this.getPaddingBottom(); lineSpace = (int) paddingTop/2; paint1.setTextSize(textSize); paint1.setColor(textColor); paint1.setAntiAlias(true); } /** * 设置画笔颜色 * @param color */ public void setPaintColor(int color){ paint1.setColor(color); } @Override public void onDraw(Canvas canvas) { textShowWidth = this.getMeasuredWidth() - paddingLeft - paddingRight; int lineCount = 0; text = this.getText().toString(); if (text == null) return; char[] textCharArray = text.toCharArray(); float drawedWidth = 0; float charWidth; int length =textCharArray.length; float space=0; for (int i = 0; i < length; i++) { charWidth = paint1.measureText(textCharArray, i, 1); if (textCharArray[i] == '\n') { lineCount++; drawedWidth = 0; continue; } if (textShowWidth - drawedWidth < charWidth) { lineCount++; drawedWidth = 0; } //调整行间距 if(lineCount==0){ space = paddingTop; }else { space = paddingTop+(lineCount+1)*lineSpace; } canvas.drawText(textCharArray, i, 1, paddingLeft + drawedWidth, (lineCount + 1) * textSize+ space, paint1); drawedWidth += charWidth; } //修正高度 setHeight((lineCount + 1) * ((int) textSize) +(int) (paddingTop+paddingBottom+(lineCount+1)*lineSpace)); }}不做过多的阐述,添加了行间距的设置,下图长篇的内容区域则为效果
0 0
- 【TextView】自定义TextView中文换行排版问题修复
- 解决TextView排版不齐问题----自定义TextVIew
- 解决TextView排版自动换行问题
- 解决TextView排版自动换行问题
- 解决TextView排版自动换行问题
- 解决TextView排版自动换行问题
- 解决TextView排版自动换行问题
- 解决TextView排版自动换行问题
- 解决TextView排版自动换行问题
- 解决TextView排版自动换行问题
- JustifyTextView 自定义TextView解决中文排版
- 通过自定义TextView,拉伸每行解决自动换行文字排版参差不齐问题
- android 自定义textView,实现排版对齐和换行
- android 自定义textView,实现排版对齐和换行
- android 自定义textView,实现排版对齐和换行
- textview排版问题
- TextView排版问题
- TextView排版混乱或者自动换行的问题
- 手机端:关于时间控件(type="date/time/week等")的默认提示
- gstreamer学习笔记:通过gst-launch工具抓取播放的音频数据并通过upd传输
- phpstorm10.0.3破解版安装教程及汉化方法
- 抽象数据类型之表(List)
- Remove Linked List Elements ---LeetCode
- 【TextView】自定义TextView中文换行排版问题修复
- OSG初始测试
- PAT(乙)-1001.害死人不偿命的(3n+1)猜想 (15)
- leetcode 347. Top K Frequent Elements
- 产品经理工具
- Cassandra学习笔记 --- 关于Cassandra的节点通讯机制——Gossip
- 斯坦福大学已经训练好的词向量模型下载网址
- maven项目在eclipse中debug时看不到源码的解决方案
- Android Studio如何是用快捷键快速生成get,set,tostring,构造函数