web-dev-qa-db-fra.com

Quelles sont les nouvelles API de défilement imbriquées pour Android-L?

Je ne parviens pas à trouver cette information sur https://developer.Android.com/preview/api-overview.html

Merci!

19
nubela

Ils n’ont pas beaucoup attiré l’attention sur cette grande nouveauté. J'ai joué avec, et je pense l'avoir compris. Tout ce que vous avez à faire est de définir

Android:nestedScrollingEnabled="true"

dans la vue déroulante imbriquée (enfant), en supposant que vous en avez un quelque part dans un autre. Cela fait défiler la vue enfant jusqu'à son achèvement, puis autorise son parent à utiliser le reste du défilement. J'ai constaté que j'aimais mieux le comportement opposé - le parent obtient la priorité de défilement, puis l'enfant suit - alors j'ai remplacé la méthode onNestedScroll dans ScrollView comme suit:

@Override
public void onNestedScroll(View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
    //swap dyConsumed and dyUnconsumed
    super.onNestedScroll(target, dxConsumed, dyUnconsumed, dxUnconsumed, dyConsumed);
}

Vous devez utiliser cette nouvelle sous-classe ScrollView pour le ScrollView externe (parent).

33
guyIntrepid

En plus de la guyIntrepid's answer , assurez-vous d'ajouter onStartNestedScroll à votre ScrollView ou ViewPager personnalisé et à return true.

@Override
public boolean onStartNestedScroll(View child, View target, int nestedScrollAxes){
   return true;
}
3
worked