Поиск…


Синтаксис

  • Snackbar make (View view, текст CharSequence, int duration)
  • Snackbar make (View view, int resId, int duration)

параметры

параметр Описание
Посмотреть Вид: представление для поиска родителя.
текст CharSequence: текст для показа. Можно форматировать текст.
RESID int: Идентификатор ресурса используемого строкового ресурса. Можно форматировать текст.
продолжительность int: Как долго показывать сообщение. Это может быть LENGTH_SHORT, LENGTH_LONG или LENGTH_INDEFINITE

замечания

Закусочная обеспечивает легкую обратную связь об операции. Он отображает краткое сообщение в нижней части экрана на мобильном телефоне и внизу слева на больших устройствах. Закуски отображаются выше всех других элементов на экране, и только один может отображаться за раз.

Они автоматически исчезают после таймаута или после взаимодействия с пользователем в другом месте экрана, особенно после взаимодействий, вызывающих новую поверхность или активность. Закусочную можно снять с экрана.

Перед использованием SnackBar вы должны добавить зависимость библиотеки поддержки дизайна в файле build.gradle :

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

Официальная документация

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

Создание простой закусочной

Создание Snackbar можно сделать следующим образом:

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

view используется , чтобы найти подходящий родитель , чтобы использовать для отображения Snackbar . Обычно это будет CoordinatorLayout который вы определили в своем XML, что позволяет добавлять такие функции, как прокрутка, чтобы отклонять и автоматически перемещать другие виджеты (например, FloatingActionButton ). Если нет CoordinatorLayout тогда используется контент содержимого окна.

Очень часто мы также добавляем действие в Snackbar . Общим вариантом использования будет действие «Отменить».

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

Вы можете создать Snackbar и показать его позже:

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

Если вы хотите изменить цвет текста 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();

По умолчанию Snackbar от правильного swipe.This пример демонстрирует, как отклонить 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;

    }

Вызвать функцию из фрагмента или действия

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

Закусочная с обратным вызовом

Вы можете использовать Snackbar.Callback для прослушивания, если снэк-бар был уволен пользователем или тайм-аутом.

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

Специальная закусочная

В этом примере показана белая закусочная с пользовательским значком отмены.

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

Закуски против тостов: Какой из них я должен использовать?

Тосты обычно используются, когда мы хотим отобразить пользователю информацию о некоторых действиях, которые успешно (или нет) произошли, и это действие не требует от пользователя каких-либо других действий. Например, когда отправлено сообщение, например:

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

Закуски также используются для отображения информации. Но на этот раз мы можем дать пользователю возможность принять меры. Например, допустим, пользователь удалил изображение по ошибке, и он хочет вернуть его. Мы можем предоставить Snackbar с действием «Отменить». Как это:

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

Вывод: Тосты используются, когда нам не нужно взаимодействие с пользователем. Закуски используются, чтобы позволить пользователям выполнить другое действие или отменить предыдущий.

Пользовательская закуска (нет необходимости)

Создание Snackbar без необходимости просмотра прохода в Snackbar, все макеты создают в android в 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();
    }
}

для класса вызовов

новый CustomSnackBar (findViewById (CustomSnackBar.VIEW_PARENT), «сообщение», CustomSnackBar.STATE_ERROR);



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow