0

我有两个网格视图,我需要同步它,当我滚动一个时,第二个必须滚动相同。我这样做了:

gvMain1.setOnScrollListener(new OnScrollListener(){
            @Override public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) 
            {
                gvMain2.setSelection(arg1);
            }
            @Override public void onScrollStateChanged(AbsListView arg0, int arg1) {}
            }); 

但是当我滚动时,我得到接近一行高度差的增量,我认为这是因为第一个网格移动,但不足以切换到下一个位置。我该如何解决?

4

1 回答 1

1

这并不容易。我尝试过这个并最终放弃了。GridView 不支持 ListView 支持的所有东西,这就是让这变得如此困难的原因。您可以打开 android ListView 源代码并尝试复制它们的功能。或者,如果适合您的需要,则只需切换到使用列表视图。

对于gridview,您可以做一些魔术来获得位置。请参阅如何从 GridView 获取滚动位置?

对于网格视图,我从来没有找到真正让它滚动到正确位置的方法。它只会逐项滚动。

有关列表视图,请参阅这篇文章: Android 在 ListView 中获取准确的滚动位置

这里也有一篇关于这个主题的好帖子:Android: Synchronized scrolling of two different views

于 2013-01-30T03:58:59.143 回答