Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android自动调整文本视图大小的动态省略号支持_Android_Textview_Android Support Library_Ellipsis_Autosize - Fatal编程技术网

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()
,也可能获得更完整(更复杂)的解决方案