2012-10-12 170 views
2

我正在實現時間軸UI,它基本上是ListView。棘手的部分是當用戶滾動ListView時,它將在滾動條旁邊顯示一個文本框(顯示時間段,比如上午9:00)。它位於左側,相鄰並隨滾動條一起移動。獲取ListView中滾動條的位置(不是位置條目)

我正在使用OnScrollListener來檢測滾動事件。但我不知道如何獲得滾動條的確切位置(頂部,中點,底部),以便我可以將文本框放在正確的位置。有很多關於獲得頂部項目的位置的帖子,但似乎不是滾動條本身。

有什麼想法?

順便說一句,抱歉沒有附加UI的屏幕截圖。由於我是新用戶,Stackoverflow不允許我這樣做。

回答

0

但我不知道怎麼去滾動條(頂部, 中點,底部)的精確位置,這樣我就可以在正確的地方

把文本框您可能需要諸如Path應用程序之類的東西。 This tutorial它是你在找什麼(可能,如果你還沒有看到它)。

基本上,ListView有關於所使用的滾動條位置(也大小)的一些方法,但這些方法都無法從外面,因爲他們被聲明爲protected,所以你需要擴展ListView類。這些方法是ListView.computeVerticalScrollExtent(),ListView.computeVerticalScrollOffset()ListView.computeVerticalScrollRange()

使用這些方法,您應該能夠確定滾動條放置在偵聽器的特定時刻的位置。 。

+0

Luksprog,感謝您的回答,這真的很有幫助。事實證明,我對UI有誤解(我被別人給了設計)它應該像Android人的應用一樣工作。當用戶觸摸/移動滾動條而不是滾動列表時,它允許快速滾動。 –

+0

@RenjiYu我已經安裝了該應用並瀏覽了它,但我甚至沒有看到滾動條,更不用說快速滾動了。那麼你到底想做什麼? – Luksprog

0

getListView()getLastVisiblePosition()

listview.post(new Runnable() { 
    public void run() { 
     listview.getLastVisiblePosition(); 
    } 
}); 

View.getScrollY()

getScrollY: 返回此視圖的滾動頂部位置。這是您視圖顯示部分的頂部邊緣。您不需要在其上繪製任何像素,因爲那些像素在屏幕上的視圖框架之外。

返回 視圖顯示部分的上邊緣,以像素爲單位。

另請參閱:http://eliasbland.wordpress.com/2011/07/28/how-to-save-the-position-of-a-scrollview-when-the-orientation-changes-in-android/