关于自定义TextView排版分散对齐的思路

转载例子:https://github.com/ufo22940268/android-justifiedtextview

    默认Textview在一行快要结束的时候,如果在符号后面,有一个长的字符串,这时候,TextView就会自动换行,导致排版会参差不齐,而自动换行导致混乱的原因了是半角字符与全角字符占位不同,一般情况下,我们输入的数字、字母以及英文标点都是半角,中文是全角,因此占位的位置大家都不同。在中英文混输的时候,导致很多文字的排版都是参差不齐的。

     那么要想要解决此问题就在解决它们的占位问题,网上有种思路是把半角符号的数字和英文全部转化为全角,这样一个字符就和中文字符对齐了。但是这样的话,就会使英文字母和英文字母之间分的很开,导致十分的难看。下面我们就开始来解决排版的问题。

    我们先了解下StaticLayoutThis is used by widgets to control text layout. ,这个东西,TextView中就是使用StaticLayout来进行文字的排版处理。而我们这边需要让它来预处理下排版的分布,然后根据其提供的getDesiredWidth(CharSequence source, TextPaint paint)方法来判断一行文字本来需要的宽度值,再固定一行的宽度值,利用

固定的宽度 - 文本宽度 文本字数 每个文字的间距

这个方法来计算出排版对齐时,每个文字之间的距离。感谢上传例子的仁兄,帮我解决了一个大问题。


你可能感兴趣的:(关于自定义TextView排版分散对齐的思路)