Toast. Всплывающее сообщение. Andoid Studio

Очень полезная функция, которая требуется достаточно часто — это toast.

Это такое небольшое сообщение внизу экрана. Текущая активность остается видимой и активной. Сообщение занимает столько места, сколько занимает его текст. Исчезает после установленного промежутка времени.

Вот как оно выглядит:

Toast удобно использовать когда не требуется ответ от пользователя. Часто оно уведомляет о происходящем в приложении действии или некоторые-подсказки, уведомления. Если же требуется ответ пользователя, то можно использовать диалоговое окно, о нем будет отдельный разговор.

 

Основа основ.

 

Как создать toast:

Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text, duration);
toast.show();

Выглядит просто — создаем экземпляр и передаем в него три параметра: контекст, текст сообщения, продолжительность времени отображения.

Можно записать короче:

Toast.makeText(context, text, duration).show();

Пример:

Toast.makeText(getApplicationContext(), "This is toast", Toast.LENGTH_SHORT).show();

Чуть подробнее. Контекст можно получить и по-другому. Например nameActivity.this (где nameActivity — имя активности), продолжительность времени может быть как стандартной:

int Toast.LENGTH_SHORT = 2000;

int Toast.LENGHT_LONG = 3500;

то есть это соответственно 3.5 секунды и 2 секунды; или можно задать время самостоятельно в переменной типа int.

 

Усложним

 

Если этих знаний недостаточно, то подробнее.

Конструктор класса выглядит следующим образом:

Toast(Context context)

Методы класса

void cancel() Прекратить отображение toast, или не отображать вовсе если отображение еще не началось
int getDuration() Получить продолжительность времени отображения
int getGravity() Получить расположение Toast на экране
float getHorizontalMargin() Вернуть отсуп по горизонтали (margin)
float getVerticalMargin() Вернуть отсуп по вертикали (margin)
View getView() Вернуть Вьюшку
int getXOffset() Получить смещение Х (речь о гравитации окна)
int getYOffset() Получить смещение У (речь о гравитации окна)
staticToast makeText(Context context, int resId, int duration) Создать простой Toast с текстом из ресурса (R.string.nameRes)
staticToast makeText(Context context, CharSequence text, int duration) Создать простой Toast с текстом
void setDuration(int duration) Задать продолжительность времени отображения
void setGravity(int gravity, int xOffset, int yOffset) Задать положение gravity
void setMargin(float horizontalMargin, float verticalMargin) Задать margin (отступы по краям)
void setText(int resId) Обновить текст в Toast , который ранее был задан  в методе makeText()
void setText(CharSequence s) Обновить текст в Toast , который ранее был задан  в методе makeText()
void setView(View view) установить Вьюшку
void show() Показывает Toast заданное количество времени

 

Что из этого полезного?

 

Два основных примера — это позиционирование Toast

toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);

(это установит гравитацию в левый верхний угол, нули рядом можно заменить на числа и подтянуть влево или вправо)

и добавление картинки в Toast

 xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/custom_toast_container"
              android:orientation="horizontal"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:padding="8dp"
              android:background="#DAAA"
              >
     android:src="@drawable/droid"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_marginRight="8dp"
               />
     android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:textColor="#FFF"
              />

тут немного сложнее. Сначала в отдельном файле xml описываем внешний вид Layout. Затем этот layout задаем нашему Toast.

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
                (ViewGroup) findViewById(R.id.custom_toast_container));
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("This is a custom toast");
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();

Вот и все сложности

 

Вывод

Если требуется вывести только текст, то смело используем makeText()

Toast.makeText(getApplicationContext(), "This is toast", Toast.LENGTH_SHORT).show();

Если задача сложнее и будет макет, тогда создаем макет, вызываем конструктор и используем setView().

You may also like...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *