通过屏幕旋转保持GridView的滚动位置

Mat*_*uno 13 android gridview orientation

如何在整个屏幕重定向中保持GridView的滚动位置(它充满了搜索结果)?

我在片段中有GridView,当我旋转屏幕时,它会跳回到列表的顶部.

为了使它更加棘手,在横向模式下,我的GridView有3列..在纵向模式下它有2列.

我似乎无法弄清楚如何保持片段的GridView滚动到屏幕方向改变时应该接近的位置.

kod*_*der 24

您可以使用以下方法,它适用于所有Android版本.

要保存当前滚动位置:

int index = gridView.getFirstVisiblePosition();
Run Code Online (Sandbox Code Playgroud)

然后在方向更改后,使用以下代码将gridView位置设置为已保存的索引:

gridView.setSelection(index);
Run Code Online (Sandbox Code Playgroud)

  • 这工作!!!! gridview.smoothScrollToPosition(int index)--->在延迟加载时不起作用. (4认同)

Dim*_*ris 19

你可以试试这个:

最初,您必须通过调用以获取GridView的当前滚动位置:

int index = gridview.getFirstVisiblePosition();
Run Code Online (Sandbox Code Playgroud)

然后,您必须在方向更改时保存此值,并且再次创建GridView时,您必须将gridview移动到此索引.

我想这可行:

gridview.smoothScrollToPosition(int index)
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

  • 我看到了,但我需要支持2.1,所以我无法访问smoothScrollToPosition().我正在使用setSelection(int position).getFirstVisiblePosition()正是我所需要的.现在我觉得很傻!谢谢! (6认同)
  • 在我的应用程序中,smoothScrollToPosition不起作用.但是setSelection运行正常. (5认同)
  • 这个解决方案不是最好的,考虑很多项目,滚动需要很长时间.gridView.setSelection(索引); 通过将列表直接放在正确的位置来解决问题. (2认同)