当前位置:   article > 正文

Android 自定义TextView 实现文字对齐排版且支持点击划词_android 实现填充对应位置字幕功能

android 实现填充对应位置字幕功能

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


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

大概的原理就是:
  1. 获取TextView的每一行。
  2. 判断每一行否充满了TextView。
  3. 如果没有充满的话,就要重新draw这一行。
注:最后一行不需要重新draw。

重新画的思路:这一行右边多余的距离除以这一行的字符数(n-1)得到每一个字符的间距。

下面给出代码,可以直接使用,不懂的可以留言,不会写博客啦。

自定义的TextView: TouchSelectWordText.java
  1. import java.text.BreakIterator;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Locale;
  5. import android.content.Context;
  6. import android.graphics.Canvas;
  7. import android.graphics.Color;
  8. import android.graphics.Paint;
  9. import android.graphics.Paint.Style;
  10. import android.graphics.PorterDuffXfermode;
  11. import android.text.Layout;
  12. import android.text.StaticLayout;
  13. import android.text.TextPaint;
  14. import android.util.AttributeSet;
  15. import android.util.SparseArray;
  16. import android.view.MotionEvent;
  17. import android.widget.TextView;
  18. import com.listviewfilter.WordTouchBean;
  19. /**
  20. * @author xwl
  21. * @Date 10/13/15
  22. */
  23. public class TouchSelectWordText extends TextView {
  24. private final String TWO_CHINESE_BLANK = " ";
  25. private BreakIterator iterator;
  26. private float dxLfet, dxRight, height;
  27. private
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/242796
推荐阅读
相关标签
  

闽ICP备14008679号