4

onNestedFling または onNestedPreFling 動作コールバックは、上方向にフリングする場合、CoordinatorLayout 内の NestedScrollView に対してトリガーされません。ただし、下方向に飛ばすと発動する。既知の問題はありますか? </p>

上記のコールバックは、NestedScrollView を RecyclerView に置き換えるとトリガーされます。

明確にするために、カスタム動作クラスは次のとおりです。

public class DummyBehavior extends CoordinatorLayout.Behavior<View> {
    public DummyBehavior() {
    }

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

    @Override
    public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, View child, View directTargetChild, View target, int nestedScrollAxes) {
        Log.i("onStartNestedScroll", "true");
        return true;
    }

    @Override
    public boolean onNestedPreFling(CoordinatorLayout coordinatorLayout, View child, View target, float velocityX, float velocityY) {
        Log.i("onNestedPreFling", "true");
        return super.onNestedPreFling(coordinatorLayout, child, target, velocityX, velocityY);
    }

    @Override
    public boolean onNestedFling(CoordinatorLayout coordinatorLayout, View child, View target, float velocityX, float velocityY, boolean consumed) {
        Log.i("onNestedFling", "true");
        return super.onNestedFling(coordinatorLayout, child, target, velocityX, velocityY, consumed);
    }
}

Log.i("onNestedFling", "true");RecyclerView でフリングが発生した場合にLog.i("onNestedPreFling", "true");のみログに記録されます。

また、NestedScrollView の場合 (上向きのフリングではありません)、下向きのフリングでのみログに記録されます。

4

0 に答える 0