我想要创建一个具有以下行为的自定义 ListView, 1. 当我在 List 上滚动手指时,它不应该自行滚动。2. 当用户手指向下并缓慢移动手指时,ListView 应该将触摸事件传递给 Child,child 将显示 ListView 图标名称。3.当用户以某个阈值速度或足够快的速度移动手指时,列表将滚动并向用户显示列表中的下一个项目。
为了实现这一点,我尝试从 ListView 覆盖 dispatchTouchEvent 方法,如下所示,
@Override
public boolean dispatchTouchEvent(MotionEvent ev)
{
if(ev.getAction() == MotionEvent.ACTION_MOVE)
{
int height = getHeight();
if((height - ev.getY())<100)//when finger is moving downwards
{
smoothScrollBy(50, 100);
}
if(ev.getY()<100)// when finger moves upwards.
{
smoothScrollBy(-50,100);
}
return true;
}
return super.dispatchTouchEvent(ev);
}
在上面的实现中,我可以将手指移动到某个点并在 100 毫秒内滚动 50 个像素。在这里我无法获得 ListView Flings 和速度。所以我尝试在 ListView 的 OnTouchEvent() 方法中添加一个 GestureListner 。但是在我只得到第一个 OnFling 之后,我没有得到任何触摸动作。有人可以指导我制作这样的 ListView 或任何其他具有这种行为的滚动视图。谢谢。