1

我想要创建一个具有以下行为的自定义 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 或任何其他具有这种行为的滚动视图。谢谢。

4

0 回答 0