新的Autosizing TextViews非常棒,但似乎缺少一个基本的东西:省略号。
添加省略号仍然需要定义Migrate
属性,但如果我希望能够根据文本视图边界动态调整文本大小,我还希望能够动态添加省略号需要的时候。现在,如果文本即使在最小文本大小的情况下也不合适,那么它就会被裁剪。
如何在不放弃新的自动调整支持的情况下添加对动态省略号的支持?
答案 0 :(得分:8)
到目前为止,我提出的最佳解决方案是以编程方式将maxLines
设置为运行时的正确值。这样的事情将完成工作:
maxLines
请注意,这取决于Android KTX(但也可以通过常规fun TextView.setMaxLinesForEllipsizing() = doOnPreDraw {
val numberOfCompletelyVisibleLines = (measuredHeight - paddingTop - paddingBottom) / lineHeight
maxLines = numberOfCompletelyVisibleLines
}
轻松实现。)
然后我们可以简单地从任何我想要获得动态省略号的OnPreDrawListener
调用此扩展名。
TextView
如果文本发生了变化,可能需要再次调用它。因此,通过将此逻辑移至自定义textView.setMaxLinesForEllipsizing()
并可能覆盖TextView
,可能还可以达到更完整(且复杂)的解决方案。