2016-10-24 2 views
4

Je suis l'implémentation d'une application où j'utilise une feuille de fond avec le comportement défini par @string/bottom_sheet_behavior. En outre, je définis un BottomSheetBehavior.BottomSheetCallback() par programme car je veux utiliser la méthode onSlide() pour animer un remplissage. Par conséquent, j'ai vraiment besoin de la valeur slideOffset pour calculer le nouveau remplissage à définir. J'ai lu le docs. Là, ils disent que la valeur varie de -1 à 0 lorsque l'état est entre l'état caché et l'état réduit. Je peux seulement voir ce comportement quand mon téléphone ou tablette est en mode portrait et est indépendant de la version Android. Cependant, en mode paysage, la plage va tout de 1 à -1. En détail est une histoire de valeur d'une feuille de fond allant de caché ici pour élargir:Android Méthode de rappel BottomSheetBehavior onSlide() donne des valeurs confuses slideOffset

D/SLIDE: -0.86160713 
D/SLIDE: -0.5714286 
D/SLIDE: -0.29910713 
D/SLIDE: -0.0625 
D/SLIDE: 0.11382114 
D/SLIDE: 0.27235773 
D/SLIDE: 0.40650406 
D/SLIDE: 0.51626015 
D/SLIDE: 0.6300813 
D/SLIDE: 0.69512194 
D/SLIDE: 0.75609756 
D/SLIDE: 0.8130081 
D/SLIDE: 0.8577236 
D/SLIDE: 0.8943089 
D/SLIDE: 0.9186992 
D/SLIDE: 0.9430894 
D/SLIDE: 0.9593496 
D/SLIDE: 0.97154474 
D/SLIDE: 0.9796748 
D/SLIDE: 0.9878049 
D/SLIDE: 0.9918699 
D/SLIDE: 0.99593496 
D/SLIDE: 1.0 

Je ne définir le nouvel état de la feuille inférieure sur un bouton clic. Les valeurs souhaitées commenceraient sur -1 et se termineraient sur 0.0 avec des étapes plus granulaires entre. Dans cette histoire, les valeurs augmentent aussi, mais elles vont jusqu'à +1.
Est-ce que quelqu'un d'autre a dû faire face au même comportement étrange et peut me donner un indice de ce qui me manque?
Si un code supplémentaire est requis, je vais mettre à jour ma question.

Merci d'avance.
Peter

Répondre

0

BottomSheetBehavior a 3 "fixe" états:

  • STATE_EXPANDED
  • STATE_COLLAPSED
  • STATE_HIDDEN

Selon la documentation:

Le nouveau décalage de ce feuille inférieure dans [-1,1] plage. Le décalage augmente au fur et à mesure que cette feuille de fond se déplace vers le haut. De 0 à 1, la feuille est entre les états repliés et étendus et de -1 à 0, elle est entre les états caché et réduit.

Vous pouvez utiliser la méthode setHideable pour exclure/inclure STATE_HIDDEN.

1

J'ai eu le même problème que vous, je ne peux pas dire que le problème est résolu parce que la méthode onSlide du BottomSheetBehavior.BottomSheetCallback() ne se comporte pas selon les documentation (valeurs de -1 à 1), mais au moins j'ai pu normaliser en réglant la hauteur du pic à 0, comme ceci:

bottomSheetBehavior.setPeekHeight(0);

Après avoir ajouté cette ligne, j'ai vu cette méthode onSlide avait toujours des valeurs positives (0 - 1). J'essaie toujours de comprendre ce qui se passe afin de trouver une meilleure solution.