Sök…


Syntax

  • Snackbar make (View view, CharSequence text, int Duration)
  • Snackbar make (View view, int resId, int Duration)

parametrar

Parameter Beskrivning
se Visa: Vyn att hitta en förälder från.
text CharSequence: Texten som ska visas. Kan formateras text.
Resid int: Resurs-ID för strängaresursen som ska användas. Kan formateras text.
varaktighet int: Hur lång tid att visa meddelandet. Det här kan vara LENGTH_SHORT, LENGTH_LONG eller LENGTH_INDEFINITE

Anmärkningar

Snackbar ger lätt feedback om en operation. Det visar ett kort meddelande längst ner på skärmen på mobil och längst ner till vänster på större enheter. Snackbars visas ovanför alla andra element på skärmen och endast en kan visas i taget.

De försvinner automatiskt efter en timeout eller efter användarinteraktion någon annanstans på skärmen, särskilt efter interaktioner som kallar en ny yta eller aktivitet. Snackbar kan dras av skärmen.

Innan du använder SnackBar måste du lägga till konstruktionsstödbibliotekets beroende i filen build.gradle :

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

Officiell dokumentation

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

Skapa en enkel snackbar

Skapa en Snackbar kan göras enligt följande:

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

view används för att hitta en lämplig förälder som ska användas för att visa Snackbar . Vanligtvis skulle detta vara en CoordinatorLayout som du har definierat i din XML, som gör det möjligt att lägga till funktionalitet som svep för att avvisa och automatiskt flytta andra widgetar (t.ex. FloatingActionButton ). Om det inte finns någon CoordinatorLayout fönsterdekorets innehållsvy.

Mycket ofta lägger vi också till en åtgärd i Snackbar . Ett vanligt fall skulle vara en "Ångra" -åtgärd.

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

Du kan skapa en Snackbar och visa den senare:

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

Om du vill ändra färgen på Snackbar text:

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

Som standard avvisar Snackbar på höger svep. Det här exemplet visar hur du avfärdar snackBar på vänster svep .

Anpassad snackbar

Funktion för att anpassa 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;

    }

Ring funktionen från fragment eller aktivitet

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

Snackbar med återuppringning

Du kan använda Snackbar.Callback för att lyssna om snackbaren avvisades av användare eller timeout.

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

Anpassad mellanmål

Det här exemplet visar en vit mellanmålstang med anpassad Ångra-ikon.

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: Vilken ska jag använda?

Rostat bröd används vanligtvis när vi vill visa en information till användaren om någon åtgärd som framgångsrikt har (eller inte) hänt och den här åtgärden kräver inte att användaren vidtar någon annan åtgärd. Som när ett meddelande har skickats, till exempel:

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

Snackbars används också för att visa information. Men den här gången kan vi ge användaren en möjlighet att vidta åtgärder. Låt oss till exempel säga att användaren raderade en bild av misstag och att han vill få tillbaka den. Vi kan tillhandahålla en mellanmål med åtgärden "Ångra". Så här:

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

Slutsats: Rostat bröd används när vi inte behöver användarinteraktion. Snackbars används för att tillåta användare att vidta en annan åtgärd eller ångra en tidigare.

Anpassad snackbar (visning utan behov)

Skapa en snackbar utan behovsöversikt till Snackbar, all layout skapas i android i 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();
    }
}

för samtalskurs

ny CustomSnackBar (findViewById (CustomSnackBar.VIEW_PARENT), "meddelande", CustomSnackBar.STATE_ERROR);



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow