Suche…


Syntax

  • Snackbar machen (View-Ansicht, CharSequence-Text, int duration)
  • Snackbar machen (View view, int resId, int duration)

Parameter

Parameter Beschreibung
Aussicht Ansicht: Die Ansicht, aus der ein übergeordnetes Element gesucht wird.
Text CharSequence: Der anzuzeigende Text. Kann formatierter Text sein.
resId int: Die Ressourcen-ID der zu verwendenden String-Ressource. Kann formatierter Text sein.
Dauer int: Wie lange wird die Nachricht angezeigt? Dies können LENGTH_SHORT, LENGTH_LONG oder LENGTH_INDEFINITE sein

Bemerkungen

Die Snackbar bietet leichtes Feedback zu einer Operation. Bei Mobilgeräten erscheint unten auf dem Bildschirm eine kurze Meldung und bei größeren Geräten unten links. Snackbars erscheinen über allen anderen Elementen auf dem Bildschirm und es kann jeweils nur eine angezeigt werden.

Sie verschwinden automatisch nach einem Timeout oder nach Benutzerinteraktion an anderen Stellen auf dem Bildschirm, insbesondere nach Interaktionen, die eine neue Oberfläche oder Aktivität aufrufen. Snackbar kann vom Bildschirm gezogen werden.

Bevor Sie SnackBar , müssen Sie die Abhängigkeit der Design-Unterstützungsbibliothek in der Datei build.gradle :

dependencies {
    compile 'com.android.support:design:25.3.1'
}

Offizielle Dokumentation

https://developer.android.com/reference/android/support/design/widget/Snackbar.html

Eine einfache Snackbar erstellen

Das Erstellen einer Snackbar kann wie folgt durchgeführt werden:

Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG).show();

Die view wird verwendet, um ein geeignetes übergeordnetes Snackbar zum Anzeigen der Snackbar . In der Regel handelt es sich hierbei um ein CoordinatorLayout , das Sie in Ihrem XML-Objekt definiert haben. Dadurch können Sie Funktionen hinzufügen, beispielsweise Streichen, um andere Widgets (z. B. FloatingActionButton ) zu schließen und automatisch zu verschieben. Wenn kein CoordinatorLayout ist, wird die Inhaltsansicht des Fensterdekors verwendet.

Sehr oft fügen wir der Snackbar auch eine Aktion hinzu. Ein häufiger Anwendungsfall wäre eine Aktion "Rückgängig machen".

Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG)
        .setAction("UNDO", new View.OnClickListener() {
            @Override
               public void onClick(View view) {
                   // put your logic here

               }
         })
        .show();

Sie können eine Snackbar erstellen und später Snackbar :

Snackbar snackbar = Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG); 
snackbar.show();

Wenn Sie die Farbe des Snackbar -Texts ändern möchten:

Snackbar snackbar = Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG);
View view = snackbar .getView();
TextView textView = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.parseColor("#FF4500"));
snackbar.show();

Standardmäßig verwirft Snackbar den rechten Swipe . Dieses Beispiel zeigt, wie die snackBar auf dem linken Swipe verworfen wird .

Benutzerdefinierte Snackbar

Funktion zum Anpassen der Snackbar

public static Snackbar makeText(Context context, String message, int duration) {
        Activity activity = (Activity) context;
        View layout;
        Snackbar snackbar = Snackbar
                .make(activity.findViewById(android.R.id.content), message, duration);
        layout = snackbar.getView();
        //setting background color
        layout.setBackgroundColor(context.getResources().getColor(R.color.orange));
        android.widget.TextView text = (android.widget.TextView) layout.findViewById(android.support.design.R.id.snackbar_text);
        //setting font color
        text.setTextColor(context.getResources().getColor(R.color.white));
        Typeface font = null;
        //Setting font 
        font = Typeface.createFromAsset(context.getAssets(), "DroidSansFallbackanmol256.ttf");
        text.setTypeface(font);
        return snackbar;

    }

Rufen Sie die Funktion aus Fragment oder Aktivität auf

 SnackBar.makeText(MyActivity.this, "Please Locate your address at Map", Snackbar.LENGTH_SHORT).show();

Snackbar mit Rückruf

Sie können Snackbar verwenden. Rückruf, um zu hören, ob die Snackbar vom Benutzer oder vom Timeout abgelehnt wurde.

Snackbar.make(getView(), "Hi snackbar!", Snackbar.LENGTH_LONG).setCallback( new Snackbar.Callback() {
                @Override
                public void onDismissed(Snackbar snackbar, int event) {
                    switch(event) {
                        case Snackbar.Callback.DISMISS_EVENT_ACTION:
                            Toast.makeText(getActivity(), "Clicked the action", Toast.LENGTH_LONG).show();
                            break;
                        case Snackbar.Callback.DISMISS_EVENT_TIMEOUT:
                            Toast.makeText(getActivity(), "Time out", Toast.LENGTH_LONG).show();
                            break;
                    }
                }

                @Override
                public void onShown(Snackbar snackbar) {
                    Toast.makeText(getActivity(), "This is my annoying step-brother", Toast.LENGTH_LONG).show();
                }
            }).setAction("Go!", new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                }
            }).show();

Benutzerdefinierte Snackbar

Dieses Beispiel zeigt eine weiße Snackbar mit einem benutzerdefinierten Rückgängig-Symbol.

Snackbar customBar = Snackbar.make(view , "Text to be displayed", Snackbar.LENGTH_LONG);
customBar.setAction("UNDO", new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    //Put the logic for undo button here

    }
});

View sbView = customBar.getView();
//Changing background to White
sbView.setBackgroundColor(Color.WHITE));

TextView snackText = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text); 
if (snackText!=null) {
    //Changing text color to Black
   snackText.setTextColor(Color.BLACK);
}

TextView actionText = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_action);
if (actionText!=null) {
    // Setting custom Undo icon
    actionText.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.custom_undo, 0, 0, 0);
}
customBar.show();

Snackbar vs Toasts: Welches sollte ich verwenden?

Toasts werden im Allgemeinen verwendet, wenn wir dem Benutzer Informationen zu einer erfolgreich (oder nicht erfolgreich) erfolgten Aktion anzeigen möchten. Bei dieser Aktion muss der Benutzer keine weiteren Aktionen ausführen. Zum Beispiel, wenn eine Nachricht gesendet wurde:

Toast.makeText(this, "Message Sent!", Toast.LENGTH_SHORT).show();

Snackbars dienen auch zur Anzeige von Informationen. Diesmal können wir dem Benutzer jedoch die Möglichkeit geben, Maßnahmen zu ergreifen. Angenommen, der Benutzer hat ein Bild aus Versehen gelöscht und möchte es zurückbekommen. Wir können eine Snackbar mit der Aktion "Rückgängig machen" bereitstellen. So was:

Snackbar.make(getCurrentFocus(), "Picture Deleted", Snackbar.LENGTH_SHORT)
        .setAction("Undo", new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //Return his picture
            }
        })
        .show();

Fazit: Toasts werden verwendet, wenn keine Benutzerinteraktion erforderlich ist. Snackbars ermöglichen Benutzern, eine andere Aktion auszuführen oder eine vorherige Aktion rückgängig zu machen.

Benutzerdefinierte Snackbar (keine Notwendigkeit)

Erstellen einer Snackbar, ohne dass die Ansicht auf Snackbar geändert werden muss. Alle Layouts werden in android in Android.R.id.content erstellt.

public class CustomSnackBar {

    public static final int STATE_ERROR = 0;
    public static final int STATE_WARNING = 1;
    public static final int STATE_SUCCESS = 2;
    public static final int VIEW_PARENT = android.R.id.content;

    public CustomSnackBar(View view, String message, int actionType) {
        super();

        Snackbar snackbar = Snackbar.make(view, message, Snackbar.LENGTH_LONG);
        View sbView = snackbar.getView();
        TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
        textView.setTextColor(Color.parseColor("#ffffff"));
        textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
        textView.setGravity(View.TEXT_ALIGNMENT_CENTER);
        textView.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);

        switch (actionType) {
            case STATE_ERROR:
                snackbar.getView().setBackgroundColor(Color.parseColor("#F12B2B"));
                break;
            case STATE_WARNING:
                snackbar.getView().setBackgroundColor(Color.parseColor("#000000"));
                break;
            case STATE_SUCCESS:
                snackbar.getView().setBackgroundColor(Color.parseColor("#7ED321"));
                break;
        }
        snackbar.show();
    }
}

für Anrufklasse

new CustomSnackBar (findViewById (CustomSnackBar.VIEW_PARENT), "message", CustomSnackBar.STATE_ERROR);



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow