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

本文介绍了在Android开发中遇到TextView文字排版问题的解决方案,特别是针对英文显示时的不整齐现象。作者提出通过获取TextView的每一行,判断并处理未充满的情况,利用额外距离除以字符数来调整每个字符的间距,从而实现文字对齐。此外,还提及了TextView支持点击划词的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


回归正题,最近做开发遇到了一个问题,关于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 final int DX = 5;
   pr
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值