アプリバーを使用すると、ユーザー アクションのボタンを追加できます。この機能を使用すると 現在のコンテキストで最も重要なアクションがアプリの上部に表示されます。 たとえば、写真閲覧アプリでは、共有や作成 ユーザーがフォトロールを見ているときに、アルバムの上部にボタンが表示されます。日時 ユーザーが個々の写真を確認すると、アプリで 切り抜きと フィルタ ボタン。
アプリバーのスペースには限りがあります。アプリが宣言するアクション数を超える場合 超過したアクションがアプリバーによってオーバーフロー メニューに送信されます。 また、アクションを常にオーバーフロー メニューに表示するよう指定することもできます。 アプリバーには表示しません
![アクションバー アイコンが表示されている「Now in Android」アプリを示す画像](https://developer.android.com/static/images/ui/notifications/actions_actionbar.png?authuser=9&hl=ja)
アクション ボタンを追加する
アクション オーバーフローで使用可能なすべてのアクション ボタンとその他のアイテムは、
(XML で定義)
メニュー リソースをご覧ください。追加
追加するには、プロジェクトのプロジェクト内で新しい XML ファイルを作成します。
res/menu/
ディレクトリ。
追加
<item>
要素を、アクションバーに含める各アイテムの
次のサンプル メニュー XML ファイル:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <!-- "Mark Favorite", must appear as action button if possible. --> <item android:id="@+id/action_favorite" android:icon="@drawable/ic_favorite_black_48dp" android:title="@string/action_favorite" app:showAsAction="ifRoom"/> <!-- Settings, must always be in the overflow. --> <item android:id="@+id/action_settings" android:title="@string/action_settings" app:showAsAction="never"/> </menu>
app:showAsAction
属性は、アクションを
ボタンとしてアプリバーに表示されます。次の値を設定した場合:
app:showAsAction="ifRoom"
- 以下のサンプルコードの
Favorite アクション - スペースに空きがある場合、アクションがボタンとして表示されます。
そのアプリバーを表示します。十分なスペースがない場合、過剰なアクションは
オーバーフロー メニューを選択します。app:showAsAction="never"
を設定した場合(
サンプルコードの settings アクション。このアクションは常に
オーバーフロー メニューに表示され、アプリバーには表示されません。
アクションが表示される場合、システムはアクションのアイコンをアクション ボタンとして使用します。 。Google Chat には便利なアイコンが マテリアル アイコン。
アクションに応答する
ユーザーがいずれかのアプリバー項目を選択すると、
アクティビティの
onOptionsItemSelected()
コールバック メソッドを呼び出し、
MenuItem
オブジェクト
タップされたアイテムを示します実装では、
onOptionsItemSelected()
の場合は、
MenuItem.getItemId()
メソッドを使用して、タップされたアイテムを特定します。返される ID は、指定した値と一致する
対応する <item>
要素の
android:id
属性。
たとえば次のコード スニペットは、ユーザーが選択したアクションを確認します。 このメソッドはユーザーの操作を認識しない場合、スーパークラスを呼び出します。 メソッド:
Kotlin
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) { R.id.action_settings -> { // User chooses the "Settings" item. Show the app settings UI. true } R.id.action_favorite -> { // User chooses the "Favorite" action. Mark the current item as a // favorite. true } else -> { // The user's action isn't recognized. // Invoke the superclass to handle it. super.onOptionsItemSelected(item) } }
Java
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_settings: // User chooses the "Settings" item. Show the app settings UI. return true; case R.id.action_favorite: // User chooses the "Favorite" action. Mark the current item as a // favorite. return true; default: // The user's action isn't recognized. // Invoke the superclass to handle it. return super.onOptionsItemSelected(item); } }