我被要求构建一个允许用户滚动大量文本的应用程序。该文本将长达数千页。 (每个页面都有ID和ID,所以我们也有导航器。)
问题:有多个文本滚动的最佳方法是什么,但是根据需要(向上或向下)按需加载更多文本。我不想加载整个文本流,因为这需要很长时间。它需要以不同的颜色和样式显示文本。例如,文本中的标题将为粗体。
我考虑过webview,但我不得不将整个文本加载到其中吗?
思考:“战争与和平小说的浏览器”
想法?
答案 0 :(得分:4)
假设文本具有合理大小的块(例如标题和段落),我将使用ListView
,行为TextViews
。您可以禁用分隔符,并且应该能够设置行布局以使其看起来是连续的文本流(利用行之间的过渡来为您提供段落间距)。 TextView
支持Spannable
内容,可通过Html.fromHtml()
从HTML轻松获取。
您的ListAdapter
需要知道您需要多少行(标题和段落的总和)。由于你无法保留RAM中的所有文本,ListAdapter
很可能需要有点虚拟,能够根据需要从闪存中获取大量文本,并为快速短程缓存适量的数据滚动。
这种方法允许您利用ListView
的行回收,最大限度地减少RAM使用,同时仍然为您提供合理的格式控制。
如果WebView
格式不足,有些人尝试将ListView
用作TextView
中的行。但是,我不知道这有多好,因为WebView
是可滚动的,并且将可滚动项放在其他可滚动项(ListView
)中通常是有问题的。