TextView排版

方案

  • 改造系统TextView
  • 自定view实现文字排版及渲染

用后者

分析

系统TextView排版及绘制逻辑不在本身,而交三个继承Layout子类(StaticLayoutDynamicLayoutBoringLayout)负责。常用StaticLayout只负责静态文字处理。系统TextView并没暴露接口代理它们。但可通反射等手段代理(代价较大)。

原因

  • Android 2.3到Android 8.0,TextView代码虽变化不大,但从Layout看,实现的逻辑或接口都有所变更,故会引代理兼容性问题。
  • TextView堪称Android最复杂组件之一,几个Layout逻辑代码复杂程度很高,自实现所有Layout接口既复杂又工作量大工。
  • 自实现一Layout基本就实现一显示组件,排版和渲染都要处理。故实现意义不大,甚至不灵活。

规则

对比系统TextView规则确,定以下规则:

  • 最多允有一字母字符宽调字间距
  • 尽量避标点符号现行首
  • 英文单词或数字不截断排版

参考

你可能感兴趣的:(android)