如何在android中制作双向可滚动视图?

时间:2015-02-22 01:14:14

标签: android excel

我需要显示一个带有二维滚动的大表,就像Excel的表格一样。它可以非常大,最多1000行(和~10列)。

所以,我找到的所有解决方案都基于ListView-into-Horizo​​ntalScrollView的想法。它太慢而无法使用。

我尝试使用WebView,但滚动到可滚动的速度更慢。

也许我可以获得listLayout的位图并在每次更新时将其放入Horizo​​ntalScrollable?或者使用其他一些神奇的魔法?或者也许我可以使用一些lib?

1 个答案:

答案 0 :(得分:0)

这是一个想法:

  • 行的ListView
  • 每行是一个单独的水平LinearLayout,每个子视图都是一个单元格
  • LinearLayout包含在Horizo​​ntalScrollView中,因此ListView中的每个项目都是Horizo​​ntalScrollView。
  • 水平滚动时,同时滚动所有Horizo​​ntalScrollViews,使它们彼此垂直对齐。

似乎所有这些Horizo​​ntalScrollViews都不会有效,但它们可以比一个Horizo​​ntalScrollView渲染嵌入式ListView更快地渲染单行。

现在,如何进行水平滚动?你有两个选择:

  1. 将单个Horizo​​ntalScrollView上的滑动事件传播给所有其他人。亲:更容易编码。 Con:由于线程延迟,刷过的HSV可能无法与其他HSV完全保持同步。

  2. 从中心位置抓取滑动事件,例如ListView上的覆盖,并将它们传播到HSV。亲:清洁显示。 Con:难以使用捕获滑动所需的所有onInterceptTouchEvent和onTouchEvent voodoo进行编码。

  3. 这种方法的另一个缺点是水平LinearLayout中单元格的视图需要设置明确的宽度,否则列不会排列。

    除非我尝试过,否则我不能在良心上推荐这个,所以我将一些代码整理在一起。您可以在android-table-test project on Github

    看到它

    我有一个包含18列和36K行的数据源,它似乎可以很好地(双向)滚动到我的所有设备上。