【发布时间】:2010-01-26 13:43:22
【问题描述】:
我已经实现了一些手势检测代码,以便我可以检测我的列表视图(位于 FrameLayout 中)中的一行何时被滑动。
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
int itemId = MainActivity.this.getListView().pointToPosition((int) e1.getX(),(int) e1.getY());
Offer order = (Offer)MainActivity.this.getListView().getAdapter().getItem(itemId);
View v = MainActivity.this.getListView().getChildAt(itemId);
}
}
我想在滑动行的顶部显示一个视图,其中包含该行的一组上下文相关选项。
我的问题在于以下方法:
v.getTop()
v.getBottom()
仅在视图滚动之前返回正确的值。我可能可以做一些计算来计算使用滚动位置等的偏移量,但我也注意到,当我开始滑动屏幕上可见的一行时,我才会得到值。如果我向下滚动列表,然后滑动一行(最初不是在屏幕外),那么这些方法会返回空值。
下面的方法似乎遇到了同样的问题...
v.getLocationOnScreen(loc)
v.getLocationInWindow(loc)
最终,我希望找到可见 listView 的顶部与已刷过的行之间的距离。然后,我将使用此距离向具有适当高度填充的父 FrameLayout 添加一个视图(以便它覆盖滑动的行)。
任何帮助将不胜感激!
【问题讨论】:
标签: android