0

我正在为社区论坛开发一个 Android 应用程序,并且正在为如何显示对话而苦苦挣扎。一页包含 30 个帖子,每个 API 都绑定到这些帖子。这些帖子包含具有通常格式(强、下划线等)的文本,但也可能包含表格、块引用和一些其他块状元素。大多数元素可以嵌套,例如,<table>块可以被<strong>标签包围。每个帖子都包含一个带有静态布局和非格式化文本的标题。

到目前为止,我使用的方法是将整个对话呈现为WebView. 这很容易,因为我可以使用 CSS 和 Javascript 来定制它,而且实现起来很简单。但是,这种方法有一些缺点:

  • WebViews 很重。尤其是当包含动画 gif 或大图像时,滚动和交互变得不那么流畅,即使在快速手机上也是如此。
  • 与应用程序的交互有些受限;渲染视图时滚动到特定位置要困难得多;大多数情况下,因为这必须通过 Javascript 处理,而且人们永远不知道渲染时间等。
  • 按钮、长触摸、链接点击等都必须通过 Javascript 处理,尤其是对于不同的触摸事件,这有点麻烦。

现在我在想不同的方法来处理这个问题。选项如下:

  • 构建动态视图层次结构。所有的内联标签都可以Spans在 中TextViews,其余的将是一些特定的布局。缺点:我会在屏幕上有大量视图,很难正确生成层次结构,并且很难,例如,用<strong>标签包围一些块视图。
  • Gmail使用的混合视图。这也需要大量的 Javascript 来计算距离等,并且在显示期间布局发生变化时灵活性较差。
  • 一个ListView30 WebViews。WebViews 非常重,所以这也可能是不明智的。

解决这个问题的最佳方法是什么?其他类似的应用程序如何解决这个问题?有什么方法可以使 Javascript 的东西WebViews更加可靠和稳定?

4

1 回答 1

1

我认为您在构建视图层次结构时一针见血。我可能会为行创建一个自定义列表项布局,尽管多行文本视图可能会起作用。然后要处理 HTML,您可以使用Html Spanned构建器。您需要创建一个Html.TagHandler来处理构建器不支持的任何 html 标签。

于 2013-08-10T19:17:28.960 回答