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 Java

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();
            }
        });

    }
}