Lanza sin problemas AppBarLayout con NestedScrollView usando AppBarLayout.Behavior
Tengo un AppBarLayout y NestedScrollView. Quiero el NestedScrollView cada vez que se desplaza hacia abajo, el AppBarLayout también debe expandirse con gracia, sin que el NestedScrollView se detenga justo antes del AppBarLayout Expandir; Se requiere un segundo vuelo / desplazamiento para hacerlo.
Verifiqué stackoverflow y encontré esta solución bastante relacionada, y podría ser utilizada. Pero en cambio, si NestedScrollView, es RecyclerView. Está dentrohttps://stackoverflow.com/a/32454407/3286489
Básicamente, tomé el código y lo cambié ligeramente, y solía verificar la velocidad> 8000 para considerar también Fling the AppBarLayout como el código a continuación.
public final class FlingBehavior extends AppBarLayout.Behavior {
private boolean isPositive;
public FlingBehavior() {
}
public Fli,ngBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onNestedFling(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, float velocityX, float velocityY, boolean consumed) {
if (velocityY > 0 && !isPositive || velocityY < 0 && isPositive) {
velocityY = velocityY * -1;
}
if (target instanceof NestedScrollView && Math.abs(velocityY) > 8000) {
consumed = false;
}
return super.onNestedFling(coordinatorLayout, child, target, velocityX, velocityY, consumed);
}
@Override
public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, int dx, int dy, int[] consumed) {
super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed);
isPositive = dy > 0;
}
}
Esto funciona, pero no es ideal. Solo quiero iniciar (continuar) el Fling en AppBarLayout (es decir, volverconsumed = false
), cuando NestedScrollView ha alcanzado la parte superior de su desplazamiento. ¿Cómo podría verificar eso en onNestedFling?
Gracias.