Панель дій дозволяє додавати кнопки для найбільш важливих елементів дій, пов'язаних з поточним контекстом додатка. Ті кнопки, які з'являються безпосередньо в панелі дій із текстовою позначкою і/або, відомі як кнопки дій.
Дії, які не можуть поміститися в панелі дій або не є досить важливими, приховані в додаткових діях.
Панель дій з кнопкою дії для пошуку та знаком додаткових дій.
ВКАЗУВАННЯ ДІЙ В XML
Всі кнопки дій та інші можливості, доступні в додаткових діях, визначаються в ресурсі меню XML. Щоб додати дії в панелі дій, створіть новий файл XML в директорії res/menu/ вашого проекту.
Додайте елемент <item> для кожного пункту, який хочете включити в панелі дій. Наприклад:
res/menu/main_activity_actions.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Search, should appear as action button -->
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
android:showAsAction="ifRoom" />
<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:showAsAction="never" />
</menu>
Завантаження іконок для Action Bar
Щоб краще відповідати принципи іконографії Android, ви повинні використовувати іконки, запропоновані в Action Bar Icon Pack.
Цим оголошуємо, що дія Search (Пошук) повинна з'явитися як кнопка дій, коли місце доступне на панелі дій, але дія Settings (Параметри) повинна завжди з'являтися в додаткових діях. (За замовчуванням, всі дії з'являються в додаткових діях, але буде хорошою практикою, щоб явно оголошувати ваші дизайнерські наміри для кожної дії.)
Атрибут icon потребує ідентифікатора ресурсу для зображення. Ім'я, яке слідує за @drawable/ має бути ім'ям растрового зображення, збереженого в директорії res/drawable/ вашого проекту. Наприклад, "@drawable/ic_action_search" звертається до ic_action_search.png. Точно так само, атрибут title використовує ресурс рядка, який визначений за допомогою XML файлу в директорії res/values/ вашого проекту, як описано в Building a Simple User Interface.
Примітка: При створенні іконок та інших растрових зображень для вашого додатку, важливо, щоб ви надавали кілька версій, кожна з яких оптимізована для різної роздільної здатності. Це буде обговорюватися далі в уроці про підтримку різних екранів.
Якщо ваш додаток використовує Support Library для сумісності версій з настільки ж низькою версією як Android 2.1, то атрибут showAsAction не доступний з android: namespace. Замість цього атрибуту передбачено Support Library і ви повинні визначити своє власне XML-namespace та використовувати цей простір імен як префікс атрибуту. (Користувальницьке XML-namespace -повинне бути засноване на імені додатку, але це може бути будь-яке ім'я, яке захочете, і доступне тільки в межах того файлу, в якому ви його оголошуєте). Наприклад:
res/menu/main_activity_actions.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<!-- Search, should appear as action button -->
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
yourapp:showAsAction="ifRoom" />
...
</menu>
ДОДАВАННЯ ДІЙ ДО ПАНЕЛІ ДІЙ
Щоб розмістити пункти меню в панелі дій, реалізуйте метод зворотного виклику onCreateOptionsMenu() у своїй activity, щоб розширити ресурс меню в даному Menu об'єкта. Наприклад:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
РЕАКЦІЯ НА КНОПКИ ДІЇ
Коли користувач натискає на одну з кнопок дій чи інший елемент в додаткових діях, система викликає метод зворотного виклику onCreateOptionsMenu() вашої activity. У вашій реалізації цього методу, викличте getItemId() на даному MenuItem, щоб визначити, який елемент був натиснутий, - повертається ID, яке відповідає значенню, яке оголошене у відповідних елементах <item> атрибуту android:id.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.action_search:
openSearch();
return true;
case R.id.action_settings:
openSettings();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
ДОДАВАННЯ КНОПКИ UP ДЛЯ ACTIVITY НИЗЬКОГО РІВНЯ
Кнопка Up в Gmail.
Всі екрани у вашому додатку, які не є головним входом в додаток (activity не є екраном "home"), повинні запропонувати користувачеві спосіб переміститися до екрану логічного батька в ієрархії додатку, натиснувши кнопку на панелі дії.
При роботі на Android 4.1 (API рівня 16 або вище), або при використанні ActionBarActivity з Support Library, виконання навігації Up просто вимагає, щоб ви оголосити батьківську activity у файлі маніфесту і дозволили кнопку Up на панелі дій.
Наприклад, ось як ви можете оголосити батьківську activity в маніфесті:
<application ... >
...
<!-- The main/home activity (it has no parent activity) -->
<activity
android:name="com.example.myfirstapp.MainActivity" ...>
...
</activity>
<!-- A child of the main activity -->
<activity
android:name="com.example.myfirstapp.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>
Потім дозвольте значок додатку як кнопку Up, викликавши setDisplayHomeAsUpEnabled():
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_displaymessage);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// If your minSdkVersion is 11 or higher, instead use:
// getActionBar().setDisplayHomeAsUpEnabled(true);
}
Тому що система тепер знає, що MainActivity є батьком activity для DisplayMessageActivity, то коли користувач натискає кнопку Up, система переходить до відповідної батьківської activity -- вам не треба обробляти подію за допомогою події кнопки Up.
(Джерело: developer.android.com)
|