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

时间:2011-12-23 19:13:52

标签: android gridview orientation

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

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

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

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

3 个答案:

答案 0 :(得分:24)

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

保存当前滚动位置:

int index = gridView.getFirstVisiblePosition();

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

gridView.setSelection(index);

答案 1 :(得分:19)

你可以试试这个:

最初,您必须通过调用:

来获取GridView的当前滚动位置
int index = gridview.getFirstVisiblePosition();

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

我认为这可行:

gridview.smoothScrollToPosition(int index)

希望这有帮助!

答案 2 :(得分:0)

使用 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。