【发布时间】:2016-04-15 21:45:18
【问题描述】:
在水平 LinearLayout(与屏幕宽度匹配)中,我有两个 ListView 实例(带有动态列表项)和一个 TextView。使用 TextView 作为画布,我想绘制(贝塞尔)线连接左侧 ListView 中的选定列表项与右侧 ListView 中的所有列表项,反之亦然。现在很可能选定的列表项或另一侧的任何列表项都在 ListView 的可见区域之外。在这种情况下,我想仅在可见的范围内绘制这些线(从上方/下方进入或从上方/下方离开)。为了绘制这些线,我需要在每条线的开头和结尾处设置 x 和 y 值。 x 只是 textView.getLeft() 和 textView.getRight(),但是 y 取决于两个列表的当前滚动位置。
我的问题是获取特定 ListView 项目的当前 y 值:
list.getChildAt(indexOfCurrentlySelectedItem).getY()
列出列表后,我需要访问这些值。我需要确定哪些列表项是可见的,哪些列表项不可见(不可见的列表项是否具有 y 值?视图?可回收视图(使用持有人模式)?)。我需要能够遍历一个列表,以便将这些 y 值传递给 TextView 的 onDraw 方法。最后,我需要安装一种机制来在发生滚动后重绘线条。
如何获取当前的 y 值(布局后和滚动后)?我是否必须跟踪 OnScrollListener 中的可见位置?我是否必须在 OnGlobalLayoutListener 中监听列表布局的结尾?我是否(也)必须在 OnGlobalLayoutListener 中为每个列表项监听列表项布局的结尾?
【问题讨论】:
标签: android listview onscrolllistener