2

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

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

有什么想法吗?

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

4

2 回答 2

0

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

您可能想要Path应用程序之类的东西。本教程是您正在寻找的内容(可能,如果您还没有看到它)。

基本上,ListView有一些关于使用的滚动条位置(也是大小)的方法,但这些方法在外部不可用,因为它们被声明为protected,因此您需要扩展ListView该类。这些方法ListView.computeVerticalScrollExtent()ListView.computeVerticalScrollOffset()ListView.computeVerticalScrollRange()

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

于 2012-10-12T13:08:41.723 回答
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/

于 2012-10-12T13:43:15.267 回答