Добавление кнопок на панель инструментов

Панель инструментов может содержать кнопки часто используемых действий в текущем контексте приложения. Кнопки, расположенные на панели инструментов называются action buttons(прим. переводчика: этот термин может пригодиться при чтении английской документации). Не очень важные кнопки, а также кнопки которые не умещаются на панели инструментов, располагаются в выпадающем меню.

Рисунок 1.Панель инструментов с кнопкой поиска и выпадающим меню.

Описание кнопок в XML

Все кнопки панели, а так же прочие пункты меню описываются в XML файле ресурса меню, который располагается в директории res/menu.

Чтобы добавить кнопку на панель инструментов, создайте элемент <item>, например так:

res/menu/main_activity_actions.xml

Скачайте иконки для кнопок панели

Чтобы следовать рекомендациям по использованию иконок, воспользуйтесь готовым набором иконок для панели инструментов.

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

Атрибут icon должен содержать идентификатор ресурса с картинкой. Скопируйте файл картинки в директорию res/drawableи укажите имя файла после @drawable/. Например, @drawable/ic_action_search будет ссылаться на файл ic_action_search.png. Атрибут title также использует строковый ресурс из XML файла, расположенного в директории res/values. Мы говорили об этом в уроке Создание простого пользовательского интерфейса.

Примечание: Важно при разработке иконок и других изображений для вашего приложения создавать различные версии файлов для поддержки устройств с разным разрешением экрана. Более подробно об этом написано в разделе Поддержка устройств с различными экранами.

Если вы используете библиотеку поддержки для совместимости с устройствами на Android 2.1, атрибут showAsAction недоступен в пространстве имен android:. В таких случаях данный атрибут добавляет библиотека поддержки. Вам необходимо создать новое пространство имен в вашем XML файле и использовать его для атрибута showAsAction. Вы можете использовать произвольное названия пространства имен, оно будет доступно только внутри файла, в котором вы его объявите.

res/menu/main_activity_actions.xml

Добавление кнопок на панель инструментов

Чтобы разместить пункты меню на панели инструментов, создайте функцию обратного вызова onCreateOptionsMenu() в вашем явлении. Данная функция добавит пункты меню из ресурса в объект типа Menu.

Обработка реакции нажатия на кнопку

Когда пользователь нажимает на кнопку или пункт меню, система вызывает функцию обратного вызова onOptionsItemSelected(), в которую передает объект типа MenuItem, ссылающийся на выбранный элемент. Используйте метод getItemId(), чтобы определить какой именно элемент был выбран,метод возвращает идентификатор, соответствующий тому, что вы указали в атрибуте android:id элемента <item>

Добавление кнопки возврата в предыдущее явление

Рисунок 2.Кнопка назад в приложении Gmail.

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

Когда вы запускаете приложение на Android 4.1 (API 16) и выше или используете ActionBarActivity из библиотеки поддержки, все что вам нужно это указать родительский элемент вашего явления в файле манифеста и разрешить показывать кнопку назад на панели инструментов.

Это можно сделать например так:

Чтобы разрешить показывать кнопку назад, необходимо вызвать метод setDisplayHomeAsUpEnabled():

Поскольку система знает, что MainActivity это родитель для DisplayMessageActivity, при нажатии кнопки назад на экране DisplayMessageActivity, система автоматически откроет MainActivity. Вам не нужно прописывать какие-либо обработчики событий для этой кнопки.

Подробная информация о данном типе навигации смотрите в разделе Навигация.

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