我正在实施一个时间轴用户界面,基本上是ListView
。棘手的部分是当用户滚动ListView
时,它将在滚动条旁边显示一个文本框(显示时间段,比如上午9:00)。它位于左侧,相邻并随滚动条移动。
我正在使用OnScrollListener
来检测滚动事件。但我不知道如何获得滚动条的精确位置(顶部,中间点,底部),以便我可以将文本框放在正确的位置。关于获取顶级项目的位置有很多帖子,但似乎不适用于滚动条本身。
有什么想法吗?
顺便说一句,抱歉没有附上用户界面的截图。 Stackoverflow不允许我这样做,因为我是新用户。
答案 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: 返回此视图的滚动顶部位置。这是视图显示部分的上边缘。您无需在其上方绘制任何像素,因为它们位于屏幕上视图的框架之外。
返回 视图显示部分的上边缘,以像素为单位。