我正在为我的游戏使用Android Monospace字体,并发现该字体的行为不符合预期 . 游戏依赖于顶部字符和下面的下划线相互排列,作为解决密码的线索 . 然而,当单词非常接近 TextView
的边缘时,如图中所示的第5行所示,蓝色文本行进入下一行,导致线索和答案不同步 .
我正在使用 TextView.setTypeface(Typeface.MONOSPACE)
这两行(嗯......一个非常接近它的字体 - 虽然问题也发生在MONOSPACE上) .
什么可能导致这个以及如何解决它?
1 回答
事实证明,文本包装的算法并不那么简单 - 下一个单词是否适合这一行 - >如果没有将它放在下一行 .
在该截图中,黑色和蓝色的文本不同(一个显示引用的作者,另一个不显示) . 似乎
TextView
正在尝试最小化线条,并且在完成之后它最小化宽度 . 鉴于截图中的两个文本是〜1行文本不同,最后的小字可以重新排列,以使TextView
的宽度更小 . 这就是导致问题的原因 - 事实上,字体是(据我所知)完全等宽的 .我想这个问题的正确解决方案是扩展
TextView
并自定义onDraw()
来处理问题 . 对我来说,只需要使两个文本显示完全相同的单词(但其中一个通过替换密码)就足够了 .