Android
Batonik
Szukaj…
Składnia
- Marka Snackbar (Wyświetl widok, tekst CharSequence, czas trwania int)
- Marka Snackbar (Wyświetl widok, int resId, int czas trwania)
Parametry
Parametr | Opis |
---|---|
widok | Widok: widok, w którym można znaleźć rodzica. |
tekst | CharSequence: tekst do wyświetlenia. Można sformatować tekst. |
Resid | int: identyfikator zasobu używanego zasobu łańcuchowego. Można sformatować tekst. |
Trwanie | int: Jak długo wyświetlać wiadomość. Może to być LENGTH_SHORT, LENGTH_LONG lub LENGTH_INDEFINITE |
Uwagi
Snackbar zapewnia lekką informację zwrotną na temat operacji. Wyświetla krótką wiadomość na dole ekranu na telefonie komórkowym i na dole po lewej na większych urządzeniach. Paski przekąskowe pojawiają się ponad wszystkimi innymi elementami na ekranie i jednocześnie może być wyświetlany tylko jeden element.
Znikają automatycznie po upływie limitu czasu lub po interakcji użytkownika w innym miejscu ekranu, szczególnie po interakcjach wywołujących nową powierzchnię lub aktywność. Snackbar może być przesunięty poza ekran.
Przed użyciem SnackBar
należy dodać zależność biblioteki obsługi projektu w pliku build.gradle
:
dependencies {
compile 'com.android.support:design:25.3.1'
}
Oficjalna dokumentacja
https://developer.android.com/reference/android/support/design/widget/Snackbar.html
Tworzenie prostego paska przekąsek
Tworzenie Snackbar
można wykonać w następujący sposób:
Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG).show();
view
służy do znalezienia odpowiedniego rodzica do wyświetlenia Snackbar
. Zazwyczaj jest to układ CoordinatorLayout
zdefiniowany w pliku XML, który umożliwia dodawanie funkcji, takich jak przeciąganie, aby zamknąć i automatycznie przenosić inne widżety (np. FloatingActionButton
). Jeśli nie ma układu CoordinatorLayout
używany jest widok zawartości dekoru okna.
Bardzo często dodajemy również akcję do Snackbar
. Typowym przypadkiem użycia byłoby działanie „Cofnij”.
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();
Możesz utworzyć Snackbar
i pokazać go później:
Snackbar snackbar = Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG);
snackbar.show();
Jeśli chcesz zmienić kolor tekstu Snackbar
:
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();
Domyślnie Snackbar
zwalnia po swoim przesunięciu w prawo. W tym przykładzie pokazano, jak wyłączyć pasek przekąsek po przesunięciu w lewo .
Niestandardowy pasek przekąsek
Funkcja dostosowywania paska przekąskowego
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;
}
Wywołaj funkcję z fragmentu lub aktywności
SnackBar.makeText(MyActivity.this, "Please Locate your address at Map", Snackbar.LENGTH_SHORT).show();
Snackbar z oddzwanianiem
Możesz użyć Snackbar.Callback, aby nasłuchiwać, czy pasek przekąsk został usunięty przez użytkownika lub upłynął limit czasu.
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();
Niestandardowy pasek przekąsek
W tym przykładzie pokazano biały pasek przekąsek z niestandardową ikoną Cofnij.
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: Którego należy użyć?
Grzanki są zwykle używane, gdy chcemy wyświetlić użytkownikowi informacje dotyczące niektórych działań, które zakończyły się pomyślnie (lub nie), a to działanie nie wymaga od użytkownika podjęcia żadnych innych działań. Na przykład, gdy wiadomość została wysłana, na przykład:
Toast.makeText(this, "Message Sent!", Toast.LENGTH_SHORT).show();
Przekąski służą również do wyświetlania informacji. Ale tym razem możemy dać użytkownikowi możliwość podjęcia działania. Załóżmy na przykład, że użytkownik przez pomyłkę usunął zdjęcie i chce je odzyskać. Możemy dostarczyć Snackbar z akcją „Cofnij”. Lubię to:
Snackbar.make(getCurrentFocus(), "Picture Deleted", Snackbar.LENGTH_SHORT)
.setAction("Undo", new View.OnClickListener() {
@Override
public void onClick(View view) {
//Return his picture
}
})
.show();
Wniosek: Tosty są używane, gdy nie potrzebujemy interakcji użytkownika. Paski przekąskowe pozwalają użytkownikom podjąć inną akcję lub cofnąć poprzednią.
Niestandardowy pasek przekąsek (bez widoku)
Tworząc Snackbar bez konieczności przejścia widoku do Snackbar, cały układ tworzymy w Androidzie w 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();
}
}
dla klasy połączeń
nowy CustomSnackBar (findViewById (CustomSnackBar.VIEW_PARENT), „wiadomość”, CustomSnackBar.STATE_ERROR);