我想创建一个自定义ListView,它将具有以下行为, 1.当我在List It上滚动手指时,它不应该自动滚动。 2.当用户手指向下并慢慢移动手指时,ListView应将触摸事件传递给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和速度。所以我试着在它的OnTouchEvent()方法中向ListView添加一个GestureListner。但是在我之后只有第一次OnFling,我没有得到任何触摸动作。 有人可以指导我使用这种行为制作这样的ListView或任何其他滚动视图。 感谢。