【发布时间】:2020-05-17 21:33:22
【问题描述】:
我正在创建一个在 TextView 中显示文本的应用程序。由于文本可能非常大,它嵌套在 ScrollView 中。
在文本非常大之前一切正常 - 例如整本书的内容。对于如此大的内容,应用程序的 UI 由于内存需求大而开始无响应。
解决方案 1 只需拆分书的内容并将其显示在多个页面中,例如通过使用 ViewPager2。
是的,这肯定会奏效。然而,在我的情况下,文本的“无限”垂直滚动是 UI 设计的决定,因此这个解决方案不适合我。
解决方案 2 使用 RecyclerView 并将“书”的每一行渲染为单独的 TextView 实例。
这将是一个很好的解决方案,但不幸的是我需要支持文本选择。此解决方案将阻止用户选择多行文本。
问题 您能否提出任何解决方案,允许“无限”(类似 RecyclerView)滚动文本,同时保留所有文本选择和文本格式化功能?
【问题讨论】:
-
这是一个过去一直困扰我的问题。不幸的是,我没有办法知道。您基本上必须自己重新实现所有选择行为,这并不容易。有一些与此相关但与 EditText 相关的问题:Android EditText alternative, EditText Performance: Understanding GPU Process Time on Profile GPU Rendering
-
我看到一个电子书阅读器结合了解决方案 1 和 2,一个 ViewPager,每个页面都有一个 ScrollView,内容按章节拆分。这可能是另一种解决方案。
标签: android android-recyclerview textview infinite-scroll android-scrollview