在Android中,使用MotionEvent时如何检测最大边距?

在Android中,使用MotionEvent时如何检测最大边距?,android,viewgroup,motionevent,Android,Viewgroup,Motionevent,我正在使用MotionEvent沿Y轴拖动视图。但是,我不希望视图向下延伸到屏幕的末端。目前,它可以远远超过这是真正令人沮丧的 相关代码: public boolean onTouch(View view, MotionEvent event) { final int X = (int) event.getRawX(); final int Y = (int) event.getRawY(); switch (event.getAction() & MotionE

我正在使用MotionEvent沿Y轴拖动视图。但是,我不希望视图向下延伸到屏幕的末端。目前,它可以远远超过这是真正令人沮丧的

相关代码:

public boolean onTouch(View view, MotionEvent event) {
    final int X = (int) event.getRawX();
    final int Y = (int) event.getRawY();
    switch (event.getAction() & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN:
            RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
            _yDelta = Y - lParams.bottomMargin;
            Log.i("Test1231", "ACTION_DOWN");
            break;
        case MotionEvent.ACTION_UP:
            Log.i("Test1231", "ACTION_UP");
            break;
        case MotionEvent.ACTION_POINTER_DOWN:
            Log.i("Test1231", "ACTION_POINTER_DOWN");
            break;
        case MotionEvent.ACTION_POINTER_UP:
            Log.i("Test1231", "ACTION_POINTER_UP");
            break;
        case MotionEvent.ACTION_MOVE:

            RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
            layoutParams.bottomMargin = Y - _yDelta;
            view.setLayoutParams(layoutParams);
            Log.i("Test1231", "ACTION_MOVE");
            break;
    }
    _root.invalidate();
    return true;
}

尝试在根视图内部“匹配父视图”。你应该在“切换”之前完成。一旦指针指向上(在您的案例中,操作已完成),返回所有内容以包装内容)。

您是对的。在切换之前将父对象匹配为int,并将边距设置为(0,0,0,int),其中int是匹配的父对象,这样做非常有效!