Всплывающие сообщения

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

Если требуется реакция пользователя на сообщение, вместо тостов используйте Уведомления.

Основы

Вначале создайте экземпляр класса Toast с помощью одного из методов makeText(). Метод принимает три параметра: контекст приложения, сообщение и время задержки, а возвращает инициализированный объект типа Toast. Вы можете отобразить сообщение на экране с помощью метода show(), как показано ниже:

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

Вы также можете объединить методы в цепочку вызовов, вроде такой:

Меняем позицию всплывающего сообщения

По умолчанию сообщения отображаются в нижней части экрана с выравниванием по центру. Вы можете изменить позицию с помощью метода setGravity(int, int, int). Метод принимает три параметра: константы Gravity, смещение x и смещение y.

Например, если вы хотите расположить тост в верхнем левом углу, вы можете передать такие параметры:

Если нужно слегка подвинуть сообщение вправо, увеличьте второй параметр, если вниз – третий.

Создание собственной разметки всплывающего сообщения

Если простого текста для вас недостаточно, создайте собственную разметку в xml файле и передайте ее в корневой объект View с помощью метода setView(View).

Например (файл toast_layout.xml):

Обратите внимание на идентификатор элемента LinearLayout “toast_layout_root”, мы применяем его для загрузки XML разметки в следующем примере:

Сначала получаем объект LayoutInflater с помощью метода getLayoutInflater() (или getSystemService()), и загружаем разметку с помощью метода inflate(int, ViewGroup). Первый параметр это идентификатор ресурса, а второй – корневой элемент типа View. И наконец создаем новое всплывающее сообщение с помощью конструктора Toast(Context) и устанавливаем некоторые параметры, вроде задержки и положения на экране. После чего вызываем метод setView(View) и передаем в него разметку. Теперь вы можете отобразить сообщение с вашей собственной разметкой с помощью метода show().

Примечание: не используйте публичный конструктор класса Toast кроме тех случаев, когда вы создаете для него собственную разметку. Если разметки нет, вы должны использовать метод makeText(Context, int, int).

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