2010-06-17 32 views
0

我正在試圖製作一個ScrollView,其中包含一個用戶可以從中選擇的數字列表。在用戶觸摸並滾動後,手指擡起後,我希望滾動「捕捉」到ScrollView中間的項目並給我輸出。我的ScrollView包含一個帶有TextView對象的垂直線性佈局。 ScrollView的垂直尺寸約爲60sp。如何在觸摸後更改ScrollView的位置?

我認爲這將涉及與ACTION_UP ScrollView.onTouch,但我不知道如何使用它。此外,有沒有辦法根據列表中的某個位置獲取項目的索引或值?

謝謝!

回答

0

你在使用ListView嗎?請參閱Hello ListView以開始使用其中一個。我不確定你是什麼意思,通過捕捉中間的項目,但是當滾動ListView時,我相信你總是會將listView的頂部與項目的頂部對齊。

對於項目的索引或位置,ListView項目有兩個概念。該位置是項目在整個列表中的位置(通常是用於填充ListView的ArrayAdapter)。該id是屏幕上的可見位置。因此,如果屏幕的頂部項目將有ID 0,但可能有位置20.請參閱Javadocs

+0

現在我正在做的是製作一個帶有linearLayout作爲其子的ScrollView。 LinearLayout裏面有一堆數字(100,125,150 ... 1000)。用戶將觸摸他的手指並拖動,直到所需的號碼在中間(或最近)。手指被移除後,ACTION_UP,最接近中間的數字將被精確地鎖定到中間(通過smoothScrollTo方式),中間數字將被選中和使用。這就是我想要做的。 – Matt 2010-06-18 00:52:05

+0

我現在有這樣的工作。我在做的是1)ACTION_UP我用.getScrollY()獲取ScrollView的當前位置。 2)我使用一些數學來獲得所需的滾動位置:((int)Math.round(posY/20)* 20)+ 10.注意數字20是項目之間的近似距離,10是中間的偏移。 3)我使用smoothScroll移動。 4)我用一些數學來計算列表中位於中間位置的數字。 5)我得到文本視圖與(TextView)findViewById(R.id.(listview.getChildAt(x).getId()))。 6)我將文本轉換爲int。 – Matt 2010-06-18 01:02:01

+0

很高興你有它的工作..是否有你不想使用ListView的原因?它看起來更適合你的情況比scrollView。另外,你是否依賴像素數學呢?請記住,不同的手機有不同的分辨率,因此可能會出現問題。 – 2010-06-18 16:52:02