我希望能够阻止用户在我的Android ScrollView中滚动,但仍然可以检测他们何时点击滚动视图中的按钮 .
我已经将ScrollView类子类化了,并且已经摆弄了 onInterceptTouchEvent
和 onTouchEvent
方法,但可以't seem to get it quite right. The code below stops the scrolling, but seems to disable tap (but not all, like if you go up and down without any move it works, but if your finger moves slightly as you tap it doesn' t注册) . 我也刚刚移除了 onInterceptTouchEvent
几乎可以工作,但滚动视图仍然会在用户移开他们的手指时滚动 .
@Override
public boolean onInterceptTouchEvent(MotionEvent ev)
{
App.log("onInterceptTouchEvent, with action : " + ev.getAction());
switch(ev.getAction())
{
case MotionEvent.ACTION_MOVE:
return true;
}
return super.onInterceptTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent ev)
{
App.log("onTouchEvent, with action : " + ev.getAction());
switch(ev.getAction())
{
case MotionEvent.ACTION_MOVE:
return false;
}
return super.onTouchEvent(ev);
}
2 回答
最后,我发现以下解决方案正是我所需要的:
如果禁用,您可以覆盖
overscrollBy()
并将deltaX和deltaY值更改为0 .您可能还希望在禁用/启用时动态隐藏/显示滚动条 .