我正在创建一个在TextView中显示文本的应用程序。由于文本可能很大,因此将其嵌套在ScrollView中。
在文本很大之前,一切都很好,例如整本书的内容。对于如此大的内容,由于内存需求大,应用程序的UI开始无响应。
解决方案1只需将书的内容拆分并显示在多个页面中,例如通过使用ViewPager2。
是的,这肯定可以。但是,在我的情况下,文本的“无限”垂直滚动是UI设计的决定,因此,此解决方案不是我的选择。
解决方案2使用RecyclerView并将“书”的每一行呈现为单独的TextView实例。
这将是一个很好的解决方案,但不幸的是,我需要支持文本选择。此解决方案将阻止用户选择多行文本。
问题您能否提出任何允许“无限”(类似于RecyclerView的)滚动文本同时保留所有文本选择和文本格式化功能的解决方案?
RecyclerView
是您最好的选择:
代替:
1] recyclerView的项目将是包含LinearLayout
的某些TextView
(类似于页面项目)。
2]假设这本书是一本大书String
,将其拆分为多个子字符串(以子字符串就像一页的方式),然后将这些子字符串大块放入某个列表中:
List<String> chunksList = new ArrayList<String>();
3)您稍后将此列表传递给适配器,并根据位置呈现每个子字符串。
adapter = new bookAdapter(........., chunksList);
4)本书String
的大小无关紧要,您都可以动态滚动。因为它取决于chunksList
以及它包含多少个子字符串(请记住,chunksList
对于要渲染的每本书都是不同的。)
5)也可以使用此方法进行分页。
祝你好运。