изменения местоположения необходимо вызвать метод setGravity(), который
принимает три параметра:
константа для размещения объекта в пределах контейнера
(Gravity.CENTER, Gravity.TOP и др.);
смещение по осиX;
смещение по осиY.
Пример
Добавляем кнопку, присваиваем атрибуту onClick значение showToast.
Напишем метод showToast.
public void showToast(View view) {
Toast toast = Toast.makeText(getApplicationContext(), "Your
message", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show(); }
Запустив приложение и нажав на кнопку,
получим всплывающее
уведомление по центру экрана, без смещений с указанным нами текстом, через две
секунды после появления уведомление скрывается (рис. 6.1).
Рис. 6.1.
Экран приложения с
ToastNotification
63
Начиная с версии Android 4.4, всплывающие уведомления получили
скругления, с версии Android 5.1 около уведомления отображается логотип
приложения.
Если простого текстового
сообщения недостаточно, можно создать
собственный дизайн разметки уведомления. Для получения разметки из XML-
файла и работы с ней в программе используется класс LayoutInflater и его методы –
getLayoutInflater()
или
getSystemService(),
которые
возвращают
объект
LayoutInflater. Затем вызовом метода inflate() получают корневой объект view этой
разметки.
Например,
для
файла
разметки
уведомления
с
именем
notification_layout.xml
и
его
корневого
элемента
c
идентификатором
android:id="@+id/toast_layout" код будет таким:
LayoutInflater inflater = getLayoutInflater();
View
layout
=
inflater.inflate(R.layout.
notification_layout
,
(ViewGroup)
findViewById(R.id.
toast_layout
));
Код notification_layout.xml:
android:id="@+id/toast_layout" android:orientation="vertical"
android:layout_width="match_parent" android:layout_height="match_parent"
android:padding="10dp" android:background="#DAAA">
android:layout_height="190dp" android:layout_marginRight="10dp"
android:background="@drawable/shrek_cat" />
android:layout_width="wrap_content" android:layout_height="match_parent"
android:text="Your message" android:textColor="#FFF777" />
И
следом укажем методом setView() у
объекта toast, укажем Viewlayout в
качестве того контейнера, который мы хотим
отобразить в всплывающем
уведомлении, и покажем его (рис.6.2):
toast.setView(layout); toast.show();
64