Android的ListView控件:压倒一切的原因滚动不执行控件、原因、Android、ListView

2023-09-06 05:36:29 作者:恍如夢境

我想知道,如果用户向上或向下滚动。我已经开始重写 OnGestureListener.onScroll()方法,并将我的 GestureDetector 的ListView

I want to know if user is scrolling up or down. I have began to override the OnGestureListener.onScroll() method and set my GestureDetector for the ListView.

public class ContactList extends ListView {

    GestureDetector gestureDetector;

    public ContactList(Context context) {
        super(context);
        initView();
    }

    public ContactList(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        initView();
    }

    public ContactList(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView();
    }

    private void initView() {
        gestureDetector = new GestureDetector(new SimpleOnGestureListener() {
            public boolean onScroll(MotionEvent firstEvent, MotionEvent secondEvent, float distanceX, float distanceY) {
                Log.d("tag", "onScroll "+firstEvent.getAction());
                Log.d("tag", "onScroll "+secondEvent.getAction());
                return true;

            };
        });

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return gestureDetector.onTouchEvent(event);
    }
}

调试,我注意到它从onTouchEvent(通行证),但不能从onScroll()和滚动不受的ListView

我在做什么错了?

感谢您

推荐答案

你有没有打过电话 super.onTouchEvent(事件) onTouchEvent 方法?

Have you tried calling super.onTouchEvent(event) in your onTouchEvent method?

修改 - 我想你想返回,以及在 onScroll 方法。

Edit - I think you want to return false as well in your onScroll method.

那么你的 onTouchEvent 方法应该是:

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (gestureDetector.onTouchEvent(event)) {
        return true;
    }
    return super.onTouchEvent(event);
}
 
精彩推荐