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