如何在android中创建双向滚动视图?

如何在android中创建双向滚动视图?,android,excel,Android,Excel,我需要显示一个带有二维滚动条的大表格,就像Excel的工作表一样。它可以非常大,最多1000行(和~10列) 所以,我找到的所有解决方案都是基于ListView转化为HorizontalScrollView的想法。它太慢,无法使用 我尝试使用WebView,但将可滚动设置为可滚动会更慢 也许我可以得到我的listLayout的位图,并在每次更新时将其放入HorizontalScrollable?或者使用其他的魔法?或者我可以使用一些lib?这里有一个想法: 行的列表视图 每行是一个单独的水平线

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

所以,我找到的所有解决方案都是基于ListView转化为HorizontalScrollView的想法。它太慢,无法使用

我尝试使用WebView,但将可滚动设置为可滚动会更慢

也许我可以得到我的listLayout的位图,并在每次更新时将其放入HorizontalScrollable?或者使用其他的魔法?或者我可以使用一些lib?

这里有一个想法:

  • 行的列表视图
  • 每行是一个单独的水平线性布局,每个子视图是一个单元
  • LinearLayout被包装在HorizontalScrollView中,因此ListView中的每个项目都是HorizontalScrollView
  • 水平滚动时,同时滚动所有水平滚动视图,使它们彼此保持垂直对齐
看起来并不是所有这些HorizontalScrollView都是有效的,但是它们可以渲染一行,比一个HorizontalScrollView渲染嵌入式ListView快得多

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

  • 将单个水平滚动视图上的滑动事件传播给所有其他视图。赞成:更容易编码。缺点:由于线程延迟,刷卡的HSV可能无法与其他HSV保持完全同步

  • 从中心位置抓取滑动事件(如ListView上的覆盖),并将其传播到HSV。赞成:更干净的显示器。缺点:很难用捕捉刷击所需的onInterceptTouchEvent和onTouchEvent巫毒来编码

  • 这种方法的另一个缺点是,水平线性布局中单元的视图需要设置明确的宽度,否则列将无法对齐

    除非我尝试过,否则我不能凭良心推荐它,所以我拼凑了一些代码。你可以在


    我有一个18列36K行的数据源,在我所有的设备上都能很好地滚动(双向)。

    更不用说了。这是开源的,伙计!代码是文档中的代码。:)GitHub项目中有示例代码,而且人们确实会在这里提出问题。我打算玩一下棒棒糖回收视图,看看是否能得到一个双向滚动的网格。如果我让它工作,我会更新我的答案。我假设,如果将support lib v7添加到您的项目中意味着网格工作和不工作之间的区别,您可以添加它。@sleeply4cat我用另一个概念更新了我的答案,您可以看看我的代码,看看您的想法,tnx,我将在几天内测试它。eclipse?为什么不是安卓工作室?)还没有取得进展。去年夏天,我为我的公司启动了一个应用程序,一旦它推出(在接下来的几周内),我将过渡到Studio。