2011-12-23 47 views
12

如何在整個屏幕重新定向過程中如何保持GridView的滾動位置(充滿搜索結果)?通過屏幕旋轉保持GridView的滾動位置

我有一個片段內的GridView,當我旋轉屏幕時,它跳回到列表的頂部。

爲了使它更加棘手,在橫向模式下我的GridView有3列..在縱向模式下它有2列。

我似乎無法弄清楚當屏幕方向改變時,如何將片段的GridView滾動到任何應該在的位置附近。

回答

18

你可以試試這個:

最初您通過打電話來想在GridView的當前滾動位置:

int index = gridview.getFirstVisiblePosition(); 

然後,你必須保存,而方向改變此值,當在GridView是再次創建你必須將你的gridview移動到這個索引。

我想這可能是工作:

gridview.smoothScrollToPosition(int index) 

希望這有助於!

+6

我看到了,但我需要支持回到2.1,所以我沒有訪問smoothScrollToPosition()。我正在使用setSelection(int position)。 getFirstVisiblePosition()正是我所需要的。現在我感到很傻!謝謝! – 2011-12-23 19:30:26

+0

沒問題的隊友!很高興幫助你! :) – 2011-12-23 19:34:20

+4

在我的應用程序中,smoothScrollToPosition不起作用。但setSelection正常工作。 – ChangUZ 2013-05-21 06:12:21

24

您可以使用以下方法,它將適用於所有Android版本。

要保存當前的滾動位置:

int index = gridView.getFirstVisiblePosition(); 

然後方向更改後,使用下面的代碼到GridView位置設置爲保存索引:

gridView.setSelection(index); 
+4

這工作!當延遲加載時,gridview.smoothScrollToPosition(int index)--->將不起作用。 – krisDrOid 2013-02-04 10:25:33

+0

相同@krisDrOid – ChangUZ 2013-05-21 06:11:21

+0

工作原理 - 感謝隊友! – 2014-03-21 18:29:19