下面直接是关于解决该问题的代码(根据别人的代码进行了修正以及测试,保证可以修改字体尺寸、颜色、根据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 @Override
23 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 }

Android开发之TextView排版问题的更多相关文章

  1. Android开发之TextView高级应用

    Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大家分享一下TextView的一些使用技巧. A ...

  2. Android开发之TextView实现跑马灯效果

    TextView及其子类,当字符内容太长显示不下时可以省略号代替未显示的字符:省略号可以在显示区域的起始,中间,结束位置,或者以跑马灯的方式显示文字(textview的状态为被选中). 其实现只需在x ...

  3. Android开发之TextView的下划线添加

    如何给TextView添加下划线呢,最近项目中需要这个,于是就用代码添加了下划线功能.主要就是用Paint的setFlags方法来实现,具体如下: ((TextView)mScrollView.fin ...

  4. Android开发之TextView中间设置横线,适用于电商项目,商品原价之类的功能。

    textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG ); //中间横线 textview.getPaint().setFlags(Pai ...

  5. Android开发之SpannableString具体解释

    在实际的应用开发过程中常常会遇到.在文本的不同部分显示一些不同的字体风格的信息如:文本的字体.大小.颜色.样式.以及超级链接等. 普通情况下,TextView中的文本都是一个样式.对于类似的情况.能够 ...

  6. 【Android UI】Android开发之View的几种布局方式及实践

    引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理 ...

  7. Android开发之PopupWindow

      /* *  Android开发之PopupWindow * *  Created on: 2011-8-8 *  Author: blueeagle *  Email: liujiaxiang@g ...

  8. Android 开发之旅:深入分析布局文件&又是“Hello World!”

    http://www.cnblogs.com/skynet/archive/2010/05/20/1740277.html 引言 上篇可以说是一个分水岭,它标志着我们从Android应用程序理论进入实 ...

  9. android开发之Animations的使用(二)

    android开发之Animations的使用(二) 本博文主要讲述的是android开发中的animation动画效果的使用,和上一篇博文不同的是,此次四种动画效果,主要使用的是xml文件实现的,提 ...

随机推荐

  1. 我的iOS学习之路(四):动画设置

    在ios的开发过程中,经常需要对视图控件进行变化,如大小,颜色,旋转等,这是如果直接将变化结果呈现出来,就显得不够友好,所以我们通常会使用动画,让用户能够看到变化的过程. 使用动画通常有两种方式,一种 ...

  2. 基本event封装:阻止冒泡、默认事件等

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> ...

  3. codeforces 607B. Zuma 区间dp

    题目链接 给一个长度为n的序列, 每一次可以消去其中的一个回文串, 问最少几次才可以消完. 代码很清楚 #include <iostream> #include <vector> ...

  4. poj 3358

    /** 大意: 给定小数(p/q),求其循环节的大小和循环节开始的位置 解法: 若出现循环 ai*2^m= aj%p; 即 2^m %p =1 若2与p 互素,则可由欧拉函数的, 不互素,需将其转化为 ...

  5. 同时安装VS2010,VS2012

    >LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏用vs2010打开工程,同时电脑上安装了高版本的VS,vs2012(vs2013)时会出现这 ...

  6. win7下Java环境变量配置及说明

    在官网上下载与操作系统对应的JDK(http://www.oracle.com/index.html) 比如我的安装路径是E:\jdk1.7.0_51\JDK 右击计算机---->属性----& ...

  7. Delphi 类型转换函数(有几个函数没见过,FloatToStrF,FloatToText等等)

    Chr 将一个有序数据转换为一个ANSI字符 Ord 将一个有序类型值转换为它的序号 Round 转换一个实型值为四舍五入后的整型值 Trunc 转换一个实型值为小数截断后的整型值 Int 返回浮点数 ...

  8. [C++ Basic]C++与Java的主要区别

    1.编译运行 java是解释性语言,java程序在运行时类加载器从类路经中加载相关的类,然后java虚拟机读取该类文件的字节,执行相应操作.而C++编译的 时候将程序编译成本地机器码.一般来说java ...

  9. 带你走进EJB--MDB

    在之前的文章中我们介绍了带你走进EJB--JMS 和 带你走进EJB--JMS编程模型 对JMS有了初步的了解, 作为EJB系列的文章我们会继续对EJB相关的内容做进一步深的学习和了解.而此次需要进行 ...

  10. IPhone多视图切换

    处理IPhone多个view切换是我们常遇到的问题,接下来有个比较实用的方法: 而且还附有创建空项目,内存告急处理和动画效果的实现! 具体步骤: 1.创建一个空的项目,然后添加一个ViewContro ...