替代setSelection(int)或如何更准确地设置滚动位置

时间:2013-01-30 03:46:03

标签: android

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

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) {}
            }); 

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

1 个答案:

答案 0 :(得分:1)

这不容易做到。我试过这个并最终放弃了。 GridView不支持ListView支持的所有相同内容,这使得这非常困难。您可以破解Android ListView源代码并尝试复制他们所做的事情。或者只是切换到使用列表视图,如果它符合您的需求。

对于gridview,你可以做一些魔术来获得这个位置。见How to get scroll position from GridView?

对于网格视图,我从来没有找到一种方法来实际将其精确地滚动到正确的位置。它只会逐项滚动。

有关列表视图,请参阅此帖子: Android getting exact scroll position in ListView

此处还有关于此主题的好帖子:Android: Synchronized scrolling of two different views