É possível adicionar uma ação a um
Snackbar
para permitir que o usuário responda à sua mensagem. Ao fazer isso, os
Snackbar
coloca um botão ao lado do texto da mensagem, e o usuário pode
para acionar sua ação tocando no botão. Por exemplo, um app de e-mails pode colocar
um botão desfazer em seu "e-mail arquivado" mensagem. Se o usuário tocar no botão
desfazer, o app removerá o e-mail do arquivo.
![Imagem mostrando uma snackbar com o botão de ação "DESFAZER"](https://developer.android.google.cn/static/images/ui/notifications/action_snackbar_undo.png?authuser=19&hl=pt)
Snackbar
com um botão de ação "Desfazer" que
restaura um item removido.
Para adicionar uma ação a uma mensagem Snackbar
, defina um objeto de listener
que implementa
View.OnClickListener
interface gráfica do usuário. O sistema chama o método
onClick()
se o usuário tocar na ação da mensagem. Por exemplo, este snippet mostra
listener para uma ação de desfazer:
Kotlin
class MyUndoListener : View.OnClickListener { fun onClick(v: View) { // Code to undo the user's last action. } }
Java
public class MyUndoListener implements View.OnClickListener { @Override public void onClick(View v) { // Code to undo the user's last action. } }
Use um dos
setAction()
métodos para anexar o listener ao seu Snackbar
. Anexe o
o listener antes de chamar
show()
,
conforme mostrado neste exemplo de código:
Kotlin
val mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_archived, Snackbar.LENGTH_SHORT) mySnackbar.setAction(R.string.undo_string, MyUndoListener()) mySnackbar.show()
Java
Snackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_archived, Snackbar.LENGTH_SHORT); mySnackbar.setAction(R.string.undo_string, new MyUndoListener()); mySnackbar.show();
SnackbarHost
,
conforme mostrado neste exemplo:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { DACPlaygroundTheme { val snackbarHostState = remember { SnackbarHostState() } val scope = rememberCoroutineScope() Scaffold( snackbarHost = { SnackbarHost(snackbarHostState) }, content = { padding -> Button( modifier = Modifier.padding(padding), onClick = { scope.launch { snackbarHostState.showSnackbar( message = "1 item removed", actionLabel = "UNDO", duration = SnackbarDuration.Short ).run { when (this) { Dismissed -> Log.d("SNACKBAR", "Dismissed") ActionPerformed -> Log.d("SNACKBAR", "UNDO CLICKED") } } } } ) { Text("Show snackbar") } } ) } } }