Branchez en douceur AppBarLayout avec NestedScrollView en utilisant AppBarLayout.Behavior

J'ai un AppBarLayout et NestedScrollView. Je souhaite la NestedScrollView chaque fois qu'elle se déplace vers le bas, AppBarLayout devrait également se développer gracieusement, sans l'arrêt NestedScrollView juste avant l'AppBarLayout Expand; Un deuxième vol / défilement est nécessaire pour que cela se produise.

Je contrôle stackoverflow et j'ai trouvé cette solution assez liée et pourrait être utilisée. Mais plutôt, si NestedScrollView, c'est RecyclerView. C'est en https://stackoverflow.com/a/32454407/3286489

  • Comment supprimer la couleur sélectionnée sur glisser sur listview
  • Comment développer un lecteur de pdf dans Android
  • Comment puis-je utiliser plusieurs valeurs pour les propriétés de la mise en page XML Android?
  • Pourquoi les boutons adjacents se déplacent lorsque je change la taille du texte dans un bouton
  • Pourquoi mon accès depuis mon mobile vers mon réseau informatique ne fonctionne-t-il pas?
  • Http Status Code dans Android Volley lorsque error.networkResponse est nul
  • Je prends essentiellement le code et l'ai changé légèrement, et j'ai utilisé pour vérifier la vitesse> 8000 pour considérer aussi Fling AppBarLayout comme code ci-dessous.

    public final class FlingBehavior extends AppBarLayout.Behavior { private boolean isPositive; public FlingBehavior() { } public FlingBehavior(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; } } 

    Cela fonctionne, mais pas idéal. Je ne souhaite que commencer (continuer) le Fling sur AppBarLayout (c'est-à-dire le retour consumed = false ), lorsque NestedScrollView atteint le haut de son scroll. Comment puis-je vérifier cela dans le fichier NestedFling?

    Merci.

  • Obtenez la distance entre deux points géo
  • La capture de l'instantané de la disposition relative avec un fond transparent donne un bitmap avec un fond noir non transparent
  • Android et & nbsp; Dans TextView
  • Comment rechercher la chaîne entière pour un mot spécifique?
  • Le certificat SSL n'est pas approuvé - sur mobile uniquement
  • Inside OnClickListener Je ne peux pas accéder à beaucoup de choses - comment m'approcher?
  • 2 Solutions collect form web for “Branchez en douceur AppBarLayout avec NestedScrollView en utilisant AppBarLayout.Behavior”

    Vous devriez vérifier pour NestedScrollView et NestedScrollingChild

      if (target instanceof NestedScrollView && Math.abs(velocityY) > 8000) { consumed = false; } if (target instanceof NestedScrollingChild && Math.abs(velocityY) > 8000) { consumed = false; } 

    Le problème a été résolu avec les bibliothèques de ce référentiel.

    ( https://developer.android.com/topic/libraries/support-library/setup.html )

     allprojects { repositories { jcenter() maven { url "https://maven.google.com" } } } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.