2012-10-12 134 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/