新人初来乍到,刚成为CSDN博客的一员,这是我第一次写博客,希望我能坚持下去,和大家一起学习一起进步。
回归正题,最近做开发遇到了一个问题,关于TextView的文字排版问题。原生的TextView在显示文本的时候,经常会发现每一行的文本不一样长,参差不齐。特别是在显示英文的时候,看上去特别别扭。于是我在网上查资料看有没有什么好解决的方法,大概都看了下,找到了其中一种比较好的方法。
大概的原理就是:
- 获取TextView的每一行。
- 判断每一行否充满了TextView。
- 如果没有充满的话,就要重新draw这一行。
重新画的思路:这一行右边多余的距离除以这一行的字符数(n-1)得到每一个字符的间距。
下面给出代码,可以直接使用,不懂的可以留言,不会写博客啦。
自定义的TextView: TouchSelectWordText.java
import java.text.BreakIterator;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.PorterDuffXfermode;
import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.view.MotionEvent;
import android.widget.TextView;
import com.listviewfilter.WordTouchBean;
/**
* @author xwl
* @Date 10/13/15
*/
public class TouchSelectWordText extends TextView {
private final String TWO_CHINESE_BLANK = " ";
private BreakIterator iterator;
private float dxLfet, dxRight, height;
private