Zoeken…


Syntaxis

  • Snackbar maken (weergave bekijken, CharSequence-tekst, int duur)
  • Snackbar maken (weergave bekijken, int resId, int duur)

parameters

Parameter Beschrijving
visie Weergave: de weergave om een ouder te vinden.
tekst CharSequence: de te tonen tekst. Kan opgemaakte tekst zijn.
RESID int: het resource-ID van de stringbron die moet worden gebruikt. Kan opgemaakte tekst zijn.
looptijd int: hoe lang om het bericht weer te geven. Dit kan LENGTH_SHORT, LENGTH_LONG of LENGTH_INDEFINITE zijn

Opmerkingen

Snackbar geeft lichtgewicht feedback over een operatie. Het toont een kort bericht onderaan het scherm op mobiel en links onderaan op grotere apparaten. Snackbars verschijnen boven alle andere elementen op het scherm en er kan er slechts één tegelijk worden weergegeven.

Ze verdwijnen automatisch na een time-out of na gebruikersinteractie elders op het scherm, vooral na interacties die een nieuw oppervlak of activiteit oproepen. Snackbar kan van het scherm worden geveegd.

Voordat u SnackBar , moet u de afhankelijkheid van de bibliotheek voor ontwerpondersteuning toevoegen aan het bestand build.gradle :

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

Officiële documentatie

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

Een eenvoudige snackbar maken

Het maken van een Snackbar kan als volgt worden gedaan:

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

De view wordt gebruikt om een geschikte ouder te vinden om de Snackbar weer te geven. Meestal is dit een CoordinatorLayout die u in uw XML hebt gedefinieerd, waarmee u functies kunt toevoegen, zoals vegen om te negeren en automatisch verplaatsen van andere widgets (bijv. FloatingActionButton ). Als er geen CoordinatorLayout wordt de inhoudsweergave van het vensterdecor gebruikt.

Heel vaak voegen we ook een actie toe aan de Snackbar . Een veelvoorkomend geval zou een actie "Ongedaan maken" zijn.

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

U kunt een Snackbar en deze later tonen:

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

Als u de kleur van de tekst van de Snackbar wilt wijzigen:

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

Standaard wordt Snackbar bij de juiste veeg afgewezen. Dit voorbeeld laat zien hoe u de snackBar bij de linker veeg kunt verwijderen .

Aangepaste snackbar

Functie om snackbar aan te passen

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;

    }

Roep de functie op vanuit fragment of activiteit

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

Snackbar met terugbelactie

U kunt Snackbar.Callback gebruiken om te luisteren of de snackbar is geweigerd door gebruiker of time-out.

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

Aangepaste snackbar

Dit voorbeeld toont een witte snackbar met een aangepast pictogram Ongedaan maken.

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 versus Toast: welke moet ik gebruiken?

Toasts worden meestal gebruikt wanneer we informatie aan de gebruiker willen weergeven over een of andere actie die al dan niet met succes is gebeurd en deze actie vereist geen andere actie van de gebruiker. Zoals wanneer een bericht is verzonden, bijvoorbeeld:

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

Snackbars worden ook gebruikt om informatie weer te geven. Maar deze keer kunnen we de gebruiker de gelegenheid geven een actie te ondernemen. Laten we bijvoorbeeld zeggen dat de gebruiker per ongeluk een foto heeft verwijderd en deze terug wil krijgen. We kunnen een snackbar voorzien van de actie "Ongedaan maken". Soortgelijk:

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

Conclusie: Toasts worden gebruikt wanneer we geen gebruikersinteractie nodig hebben. Snackbars worden gebruikt om gebruikers een andere actie te laten ondernemen of een vorige ongedaan te maken.

Aangepaste snackbar (geen weergave nodig)

Een snackbar maken zonder de passpass-weergave naar Snackbar te maken, alle lay-outs maken in android in android.R.id.content.

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

voor oproepklasse

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



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow