textView换行的问题
来源:互联网 发布:软件售后服务计划书 编辑:程序博客网 时间:2024/04/29 07:40
import java.util.Arrays;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Paint.FontMetrics;import android.text.Layout;import android.text.StaticLayout;import android.text.TextPaint;import android.util.AttributeSet;import android.widget.TextView;/** * @author ccheng * @Date 3/18/14 */public class JustifyTextView extends TextView { public JustifyTextView(Context context, AttributeSet attrs) { super(context, attrs); } protected void onDraw(Canvas canvas) { TextPaint mPaint = getPaint(); FontMetrics fm = mPaint.getFontMetrics(); float baseline = fm.descent - fm.ascent; float x = 0; float y = baseline; // 由于系统基于字体的底部来绘制文本,所有需要加上字体的高度。 String txt = this.getText().toString(); // 文本自动换行 String[] texts = autoSplit(txt, mPaint, getWidth() - 5); for (String text : texts) { canvas.drawText(text, x, y, mPaint); // 坐标以控件左上角为原点 y += baseline + fm.leading; // 添加字体行间距 } } /** * 自动分割文本 * * @param content * 需要分割的文本 * @param p * 画笔,用来根据字体测量文本的宽度 * @param width * 最大的可显示像素(一般为控件的宽度) * @return 一个字符串数组,保存每行的文本 */ private String[] autoSplit(String content, Paint p, float width) { int length = content.length(); float textWidth = p.measureText(content); if (textWidth <= width) { return new String[] { content }; } int start = 0, end = 1, i = 0; int lines = (int) Math.ceil(textWidth / width); // 计算行数 String[] lineTexts = new String[lines]; while (start < length) { if (p.measureText(content, start, end) > width) { // 文本宽度超出控件宽度时 lineTexts[i++] = (String) content.subSequence(start, end); start = end; } if (end == length) { // 不足一行的文本 lineTexts[i] = (String) content.subSequence(start, end); break; } end += 1; } return lineTexts; }}
0 0
- textView换行的问题
- TextView的自动换行问题
- TextView首行缩进换行的问题
- Android TextView换行问题
- textview换行问题
- android textView 换行问题
- android textview换行问题
- Android TextView换行问题
- TextView乱换行问题
- textview展示换行问题
- android TextView 换行问题
- Android TextView 自动换行问题
- Android TextView标点符号换行问题
- Android TextView 自动换行问题
- android textview自动换行问题
- Textview解决换行混乱问题
- android TextView 异常换行问题
- android textview自动换行问题
- 使用Intent的Flag设置启动参数
- iOS 中如何添加应用自己的字体
- 线上引流压测工具Meteor
- 多线程三种实现方式
- Spark分析窗口函数
- textView换行的问题
- 自定义titlebar
- 安卓开发环境配置相关问题(坚果手机)
- XML和Schema命名空间详解---实例篇
- 第五章.简单的数据查询.总结
- 【eralng】random 伪随机
- 搜索框(SearchView)详解
- Deep Learning及NLP(自然语言处理)杂谈--第一部分
- SpringMVC--常用注解(详解)