在NestedScrollView中实现flings的Android问题

时间:2015-05-06 22:57:08

标签: android android-support-library

我使用NestedScrollView时遇到了一些问题。我的用例使用2 NestedScrollView,父母和孩子。我已经覆盖了父的onNestedPreScroll方法,有时会在子节点之前使用滚动像素:

@Override
public void onNestedPreScroll(View target, int dx, int dy, int[] consumed) {
    if (dy > 0 && getScrollY() < getScrollRange()) {
        int oldScrollY = getScrollY();
        scrollBy(0, dy);
        consumed[1] = getScrollY() - oldScrollY;
    }
}

我还覆盖了父母的onNestedPreFling,以便在孩子面前消磨:

@Override
public boolean onNestedPreFling(View target, float velocityX, float velocityY) {
    if (velocityY > 0 && getScrollY() < getScrollRange()) {
        fling((int) velocityY);
        return true;
    }
    return false;
}

但是,我注意到当父母在onNestedPreScroll中使用了整个滚动时,父母的onNestedPreFling未被调用。

从我的调查中看来,如果父母使用整个卷轴,则孩子会做出反应,好像发生了ACTION_MOVE deltaY=0事件。这会导致绝对值deltaY小于mTouchSlopmIsBeingDragged仍将设置为false。由于mTouchSlopfalse,因此当儿童发生ACTION_UP事件时,不会进行任何计算。

我可以使用不同的方法来获得父NestedScrollView的fling速度吗?

NestedScrollViewhttps://developer.android.com/reference/android/support/v4/widget/NestedScrollView.html

0 个答案:

没有答案