获取ListView中滚动条(不是位置项)的位置

时间:2012-10-12 12:58:08

标签: android android-listview position scrollbar

我正在实施一个时间轴用户界面,基本上是ListView。棘手的部分是当用户滚动ListView时,它将在滚动条旁边显示一个文本框(显示时间段,比如上午9:00)。它位于左侧,相邻并随滚动条移动。

我正在使用OnScrollListener来检测滚动事件。但我不知道如何获得滚动条的精确位置(顶部,中间点,底部),以便我可以将文本框放在正确的位置。关于获取顶级项目的位置有很多帖子,但似乎不适用于滚动条本身。

有什么想法吗?

顺便说一句,抱歉没有附上用户界面的截图。 Stackoverflow不允许我这样做,因为我是新用户。

2 个答案:

答案 0 :(得分:0)

  

但我不知道如何获得滚动条的确切位置(顶部,   中点,底部),以便我可以将文本框放在正确的位置

您可能需要类似Path应用程序的内容。 This tutorial它正在寻找什么(可能,如果你还没有看到它)。

基本上,ListView有一些关于使用的滚动条位置(也是大小)的方法,但这些方法不能从外部获得,因为它们被声明为protected,所以你需要扩展ListView课程。这些方法是ListView.computeVerticalScrollExtent()ListView.computeVerticalScrollOffset()ListView.computeVerticalScrollRange()

使用这些方法,您应该能够在听众的特定时刻确定滚动条的位置。

答案 1 :(得分: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/