我正在为社区论坛开发一个 Android 应用程序,并且正在为如何显示对话而苦苦挣扎。一页包含 30 个帖子,每个 API 都绑定到这些帖子。这些帖子包含具有通常格式(强、下划线等)的文本,但也可能包含表格、块引用和一些其他块状元素。大多数元素可以嵌套,例如,<table>
块可以被<strong>
标签包围。每个帖子都包含一个带有静态布局和非格式化文本的标题。
到目前为止,我使用的方法是将整个对话呈现为WebView
. 这很容易,因为我可以使用 CSS 和 Javascript 来定制它,而且实现起来很简单。但是,这种方法有一些缺点:
WebView
s 很重。尤其是当包含动画 gif 或大图像时,滚动和交互变得不那么流畅,即使在快速手机上也是如此。- 与应用程序的交互有些受限;渲染视图时滚动到特定位置要困难得多;大多数情况下,因为这必须通过 Javascript 处理,而且人们永远不知道渲染时间等。
- 按钮、长触摸、链接点击等都必须通过 Javascript 处理,尤其是对于不同的触摸事件,这有点麻烦。
现在我在想不同的方法来处理这个问题。选项如下:
- 构建动态视图层次结构。所有的内联标签都可以
Spans
在 中TextViews
,其余的将是一些特定的布局。缺点:我会在屏幕上有大量视图,很难正确生成层次结构,并且很难,例如,用<strong>
标签包围一些块视图。 - Gmail使用的混合视图。这也需要大量的 Javascript 来计算距离等,并且在显示期间布局发生变化时灵活性较差。
- 一个
ListView
30WebViews
。WebViews 非常重,所以这也可能是不明智的。
解决这个问题的最佳方法是什么?其他类似的应用程序如何解决这个问题?有什么方法可以使 Javascript 的东西WebViews
更加可靠和稳定?