动态省略号支持Android自动调整TextViews

时间:2017-09-18 19:04:17

标签: android textview android-support-library ellipsis autosize

新的Autosizing TextViews非常棒,但似乎缺少一个基本的东西:省略号。

添加省略号仍然需要定义Migrate属性,但如果我希望能够根据文本视图边界动态调整文本大小,我还希望能够动态添加省略号需要的时候。现在,如果文本即使在最小文本大小的情况下也不合适,那么它就会被裁剪。

如何在不放弃新的自动调整支持的情况下添加对动态省略号的支持?

1 个答案:

答案 0 :(得分:8)

到目前为止,我提出的最佳解决方案是以编程方式将maxLines设置为运行时的正确值。这样的事情将完成工作:

maxLines

请注意,这取决于Android KTX(但也可以通过常规fun TextView.setMaxLinesForEllipsizing() = doOnPreDraw { val numberOfCompletelyVisibleLines = (measuredHeight - paddingTop - paddingBottom) / lineHeight maxLines = numberOfCompletelyVisibleLines } 轻松实现。)

然后我们可以简单地从任何我想要获得动态省略号的OnPreDrawListener调用此扩展名。

TextView

如果文本发生了变化,可能需要再次调用它。因此,通过将此逻辑移至自定义textView.setMaxLinesForEllipsizing() 并可能覆盖TextView,可能还可以达到更完整(且复杂)的解决方案。