La bibliothèque de prise en charge de la conception Android inclut désormais la prise en charge de Snackbar.
J'ai utilisé le code suivant pour en créer un:
Snackbar.make(findViewById(R.id.root_layout), result, Snackbar.LENGTH_LONG)
.setAction("Dismiss", new View.OnClickListener() {
@Override
public void onClick(View v) {
}
}).show();
Le snack-bar peut être rejeté par un glissement. Cependant, je souhaite également le rejeter en utilisant son propre bouton d'action (créé à l'aide de la fonction setAction).
Cependant, il ne semble y avoir aucune fonction disponible qui puisse faire cela.
Snackbar
est contraire aux directives de conception de matériel de Google .Réponses:
Pour Java,
La
.make
méthode renvoie unSnackbar
objet. Enregistrez une instance de cet objet en le créantfinal
. Ensuite, dans leonClick()
, appelez.dismiss
:Pour Kotlin,
la source
OnClickListener
estnull
Implémentez une action de clic et laissez-la se vider. Cliquer sur l'action de clic vide fera disparaître le snack.
la source
null
pour un auditeur, pas besoin de créer une instance réelleLorsque vous utilisez,
Snackbar.LENGTH_LONG
vous n'avez pas besoin de bouton d'action pour ignorer, après la seconde, rejetez automatiquement. Vous devez utiliser ce code:Faites attention à cette ligne :
la source
C'est une vieille question, mais je veux juste partager ma propre expérience autour d'une fonctionnalité similaire sur Snackbar. Nous avons donc eu un design pour notre application, ce snack-bar devrait être affiché indéfiniment et l'utilisateur devrait pouvoir le rejeter ... mais il ne devrait pas y avoir de bouton DISMISS à l'intérieur (Google ne recommande de toute façon pas de rejeter ou d'annuler les actions dans les snackbars). Notre snack a dû être rejeté simplement en appuyant dessus.
La seule solution, qui fonctionnait pour nous, était à la fin (j'utilise retrolambda ici, mais View.OnClickListener standard pourrait également être utilisé):
Notez l' appel getView () au milieu.
la source
Snackbar (de 'com.android.support:design:23.2.1' ) prend en charge de nombreux types d'action de licenciement. Vous pouvez créer un filtre simple en utilisant un événement , comme dans cet exemple:
Types de rejet de Snackbar:
PS Dans l'exemple de code utilisé des expressions lambda (par RetroLambda)
la source
J'ai eu le même problème. Quand j'ai utilisé .dismiss (), les animations étaient différentes et il y avait deux problèmes:
En regardant dans le code source Android original pour Snackbar, j'ai trouvé la solution suivante:
Ensuite, j'appellerais le .performClick sur le snackBarActionButton
Lien vers le code source Android pour Snackbar: https://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/design/src/android/support/design/widget/Snackbar.java
la source