In questa guida pratica scoprirai come utilizzare la Snackbar Android per mostrare messaggi brevi e contestuali all’utente senza interrompere il flusso dell’app. Vedremo cos’è la Snackbar, a cosa serve e in quali situazioni è preferibile rispetto ad altri componenti come il Toast. Tutti gli esempi sono realizzati passo passo con Java e Android Studio, così puoi copiarli, adattarli e provarli subito nel tuo progetto. Continua a leggere per imparare a integrare velocemente una Snackbar efficace e ben progettata nelle tue schermate.

Snackbar Android: Esempio Pratico con CoordinatorLayout
Uno SnackBar in Android è un breve messaggio che compare in basso sullo schermo. Informa l’utente su un’azione appena eseguita o suggerisce il passo successivo. A differenza di un Toast, può includere un pulsante (per esempio “ANNULLA” o “DISMISS”) e reagire al layout sottostante.
Di solito si usa uno SnackBar per messaggi brevi e poco invasivi, come la conferma di un salvataggio, l’annullamento di un’azione o un errore temporaneo. In questo esempio lo inseriamo in un CoordinatorLayout, che permette allo SnackBar di interagire con altri componenti (come un FloatingActionButton) e di comparire sopra il contenuto.
La schermata contiene tre pulsanti. Ognuno mostra uno SnackBar con una durata diversa: LENGTH_SHORT, LENGTH_LONG o LENGTH_INDEFINITE. Nel caso INDEFINITE aggiungiamo l’azione “DISMISS” per chiudere il messaggio in modo esplicito.
Layout XML Snackbar Android: activity_main.xml
Il file di layout definisce un CoordinatorLayout come contenitore principale. All’interno trovi tre pulsanti, posizionati a diverse altezze lungo l’asse verticale.
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorLayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/coordinatorLayout"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn"
android:layout_marginTop="50dp"
android:text="Snackbar.LENGTH_SHORT"
android:textSize="15sp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn2"
android:layout_marginTop="150dp"
android:text="Snackbar.LENGTH_LONG"
android:textSize="15sp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn3"
android:layout_marginTop="250dp"
android:text="Snackbar.LENGTH_INDEFINITE"
android:textSize="15sp" />
</androidx.coordinatorLayout.widget.CoordinatorLayout>
Codice Java Snackbar Android: MainActivity.java
Nel codice Java colleghiamo i pulsanti definiti nel layout e inizializziamo il CoordinatorLayout. Per ogni pulsante impostiamo un listener che mostra uno SnackBar con la durata corrispondente. L’ultimo pulsante usa uno SnackBar a durata indefinita con l’azione “DISMISS”.
Come hai visto, implementare una Snackbar in Android è semplice e immediato. Prova subito questi esempi nei tuoi progetti Java e scopri come migliorare l’esperienza utente della tua app! Per approfondire ulteriormente, consulta la documentazione ufficiale Android.
package com.example.snackBar;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import com.google.android.material.snackbar.Snackbar;
public class MainActivity extends AppCompatActivity {
CoordinatorLayout coordinatorLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnOne = findViewById(R.id.btn);
Button btnTwo = findViewById(R.id.btn2);
Button btnThree = findViewById(R.id.btn3);
coordinatorLayout = findViewById(R.id.coordinatorLayout);
btnOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(coordinatorLayout, "SnackBar Message", Snackbar.LENGTH_SHORT)
.show();
}
});
btnTwo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(coordinatorLayout, "SnackBar Message", Snackbar.LENGTH_LONG)
.setDuration(7000)
.show();
}
});
btnThree.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(coordinatorLayout, "SnackBar Message", Snackbar.LENGTH_INDEFINITE)
.setAction("DISMISS", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
})
.show();
}
});
}
}