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

Android 通过屏幕旋转保持GridView的滚动位置,android,gridview,orientation,Android,Gridview,Orientation,如何在整个屏幕重新定向过程中保持GridView的滚动位置(其中充满了搜索结果) 我将GridView放在一个片段中,当我旋转屏幕时,它会跳回到列表的顶部 更为棘手的是,在横向模式下,我的GridView有3列。。在纵向模式下,它有两列 我似乎不知道当屏幕方向改变时,如何保持片段的GridView滚动到接近它应该在的位置 您可以尝试以下方法: 首先,您必须通过调用以下命令获取GridView的当前滚动位置: int index = gridview.getFirstVisiblePosition

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

我将GridView放在一个片段中,当我旋转屏幕时,它会跳回到列表的顶部

更为棘手的是,在横向模式下,我的GridView有3列。。在纵向模式下,它有两列

我似乎不知道当屏幕方向改变时,如何保持片段的GridView滚动到接近它应该在的位置

您可以尝试以下方法:

首先,您必须通过调用以下命令获取GridView的当前滚动位置:

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

我想这是可行的:

gridview.smoothScrollToPosition(int index)

希望这有帮助

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

要保存当前滚动位置,请执行以下操作:

int index = gridView.getFirstVisiblePosition();
然后在方向更改后,使用以下代码将gridView位置设置为保存的索引:

gridView.setSelection(index);

使用getFirstVisiblePosition()很好,但我找到了一个很好的解决方案,只是为了保存视图状态

//state of view (includes scroll position) as a Parceble
Parcelable mobileGalleryState = gridView.onSaveInstanceState();

//just restore previous state including all changes are made before
gridView.onRestoreInstanceState(mobileGalleryState);

顺便说一句,您也可以将其用于ListView。

我看到了这一点,但我需要支持返回到2.1,因此我无法访问smoothScrollToPosition()。我使用的是setSelection(int位置)。getFirstVisiblePosition()正是我所需要的。现在我觉得自己很傻!非常感谢。没问题,伙计!很高兴这对你有帮助!:)在我的应用程序中,smoothScrollToPosition不起作用。但是SETION很好。这个解决方案不是最好的,考虑很多项目,滚动会花很长时间。gridView.setSelection(索引);通过直接将列表放到正确的位置来解决问题。这很有效!!!!smoothScrollToPosition(int索引)-->在有延迟加载时将不起作用。回答得很好。我更喜欢它,因为它保持了真正的滚动位置。在我的例子中,当只选择一个项目时,位置略有不同(大约100px)。