Android 自定义TextView 实现文字对齐排版且支持点击划词

新人初来乍到,刚成为CSDN博客的一员,这是我第一次写博客,希望我能坚持下去,和大家一起学习一起进步吐舌头


回归正题,最近做开发遇到了一个问题,关于TextView的文字排版问题。原生的TextView在显示文本的时候,经常会发现每一行的文本不一样长,参差不齐。特别是在显示英文的时候,看上去特别别扭。于是我在网上查资料看有没有什么好解决的方法,大概都看了下,找到了其中一种比较好的方法。

大概的原理就是:
  1. 获取TextView的每一行。
  2. 判断每一行否充满了TextView。
  3. 如果没有充满的话,就要重新draw这一行。
注:最后一行不需要重新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 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值