2011-04-04 67 views
9

有誰知道基於當前選擇或使用setSelection設置選擇集的ListView居中方式嗎?在其當前選擇中居中ListView

我沒有看到這個StackOverflow的其他問題沒有任何答案:Android ListView center selection

感謝, 凱文

+0

你好,你可以幫我這個..我的影片只得到了5項,並因此一個ListView ListView不會滾動。但我想將選定的項目設置爲居中,而smoothScrollByOffset(int offset)似乎不起作用。 – 2017-03-27 04:45:21

回答

3

我還沒有嘗試過這一點,但基於當前的選擇,你可以使用public void smoothScrollByOffset (int offset)來獲取視圖滾動到您想要的位置,以便您的選擇位於視圖中間?

18

首先,使用getHeight獲取ListView的高度,該高度以像素爲單位返回ListView的高度。

然後,使用相同的方法獲取該行視圖的高度。

然後,使用setSelectionFromTop並將ListView的高度的一半減去該行高度的一半。

喜歡的東西:

int h1 = mListView.getHeight(); 
int h2 = v.getHeight(); 

mListView.setSelectionFromTop(position, h1/2 - h2/2); 

或者,而不是做數學題,你可能只是挑選從頂部偏移恆定的,但我認爲這可能是對自第二不同的設備更脆弱setSelectionFromTop的參數似乎是以像素爲單位而不是與設備無關的像素。

我還沒有測試過這段代碼,但只要你的行高度大致相同,它就會工作。

+0

爲我工作... – 2013-11-11 06:29:35

4

您將需要有滾動視圖和所選項目的視圖。然後,你可以簡單地做:

scrollView.smoothScrollTo(0, selectedView.getTop() - (scrollView.getHeight()/2) + (selectedView.getHeight()/2), 0); 

這將圍繞滾動視圖正好在selectedView