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