Je voulais fournir l'animation SnackBar
de haut, au lieu du comportement normal qui affiche le SnackBar
de bas. Est-ce facilement piratable?
Non ce n'est pas possible. La documentation indique que
Ils affichent un bref message en bas en bas de l'écran sur mobile et en bas à gauche sur les gros appareils. Les barres de collation apparaissent au-dessus de tous les autres éléments à l'écran et un seul peut être affiché à la fois.
Vous pouvez utiliser une bibliothèque de troisième partie, comme Crouton par exemple
c'est possible. vérifier cette bibliothèque faite par moi https://github.com/AndreiD/TSnackBar
en gros, vous ajoutez 2 nouvelles animations pour glisser du haut et changez la gravité de la mise en page. C'est tout :)
Édition ultérieure: il y a un bug en cours ..... si quelqu'un veut passer un peu de temps à le réparer, nous l'apprécierions tous :)
CoordinatorLayout coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinatorLayout);
Snackbar snackbar = Snackbar.make(coordinatorLayout, "Text", Snackbar.LENGTH_LONG);
View view = snackbar.getView();
CoordinatorLayout.LayoutParams params =(CoordinatorLayout.LayoutParams)view.getLayoutParams();
params.gravity = Gravity.TOP;
view.setLayoutParams(params);
snackbar.show();
EDIT: Cette solution rend Snackbar en haut, mais l'animation est en bas.
C'est possible, au moins avec Matériel Android bibliothèque et un petit truc. Vous pouvez lier le snack-bar à une vue qui s'affiche en première position comme ceci: Sur activity_main.xml:
<FrameLayout>
<!-- rest of the components here -->
<androidx.coordinatorlayout.widget.CoordinatorLayout
Android:id="@+id/top_coordinator"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_gravity="top"/>
</FrameLayout>
Sur MainActivity.kt:
val snackbar = Snackbar.make(
findViewById(R.id.top_coordinator),
"Hello World",
Snackbar.LENGTH_INDEFINITE
)
snackbar.show()