我有一个自定义视图,其中有触摸事件(滑动等)的功能。现在可能会发生,这个自定义视图在ScrollableLayout
. 那么问题是,当用户在我的自定义视图中滑动时,父级(ScrollableLayout)也会处理滑动手势,因此它会滚动,但它不应该滚动。
我需要类似event.preventDefaults()
JavaScript 的东西。
我总是覆盖View#onTouchEvent
并返回true
。我想,当我从onTouchEvent
这里返回 true 时,意味着该事件已被消耗,并且没有其他视图会获得 onTouchEvent,但这是错误的。
有谁能够帮助我?
我的视图很容易测试它:
public class PreventingTouchEventView extends View {
public PreventingTouchEventView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.RED);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(200, 200);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return true;
}
}
我将一个示例 android 项目推送到 github: https ://github.com/jjoe64/android-preventing-touch-test
如果您在红色画布内触摸并滚动,则 ScrollableLayout 不应滚动。