SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Android Studio 2で始めるアプリ開発入門

Androidアプリのメニュー ~ オプションメニューとコンテキストメニュー

Android Studio 2で始めるアプリ開発入門 第8回


  • X ポスト
  • このエントリーをはてなブックマークに追加

オプションメニュー

 サンプルの基本部分が作成できたところで、これにオプションメニューを追加していきます。

オプションメニューとは

 オプションメニューとは、アクションバーに表示されるメニューのことです。下図のように、アクションバーの右に点3個のアイコンが表示され、それをタップすると、選択メニューが表示される仕組みです。

図2 オプションメニューが追加されたリスト画面
図2 オプションメニューが追加されたリスト画面

 この右端に表示される点3個のメニューを「オーバーフローメニュー」といいます。これをタップすると、定食とカレーを選択できるようになっており、それぞれを選択すると、選択されたメニューリストが表示されるように改造していきます。

xmlファイルの作成

 オプションメニューそのものは、画面と同じようにxmlファイルに記述します。ただし、ファイルを入れるフォルダが違います。それを追加します。

 resフォルダを右クリックし、[New]>[Android resource directory]を選択してください。以下のようなダイアログが表示されるので、「Resource type:」から「menu」を選択し、OKをクリックしてください。

図3 リソースフォルダ追加画面
図3 リソースフォルダ追加画面

 これでres/menuフォルダが追加されました。メニューに関係するxmlファイルはこのフォルダ中に格納します。

 次に、xmlファイルを作成します。menuフォルダを右クリックし、[New]>[Menu resource file]を選択してください。以下のようなダイアログが表示されるので、「File name:」に「menu_options_menu_list」を入力し、OKをクリックしてください。

図4 メニュー用xmlファイル追加画面
図4 メニュー用xmlファイル追加画面

 menuタグが記述されたxmlファイルが作成されているはずです。

 メニュー用のxmlファイルは、<menu>タグで始まり、この中に選択肢ひとつにつき<item>タグをひとつ記述してきます。今回は、選択肢が2個ですので、<item>タグを2個追加します。以下のソースコードを<menu>タグ内に記述してください。

リスト2 menu_options_menu_list.xmlにソースコードを追加
<menu xmlns:android="http://schemas.android.com/apk/res/android"
	  xmlns:app="http://schemas.android.com/apk/res-auto">

	<item
		android:id="@+id/menuListOptionTeishoku"
		app:showAsAction="never"
		android:title="@string/menu_list_options_teishoku"/>
	<item
		android:id="@+id/menuListOptionCurry"
		app:showAsAction="never"
		android:title="@string/menu_list_options_curry"/>

</menu>

[Note]xmlns:app属性のインポート

 <menu>開始タグのxmlns:app属性は最初は記述されていません。<item>タグのapp:showAsAction属性を記述する際にappが赤文字で表示され、下図のようなメッセージが表示されるはずです。

図5 appのエラー表示
図5 appのエラー表示

 その時に、メッセージ通りに「Alt+Enter」を入力すると、自動でインポートしてくれます。

 <item>タグを記述する際、上記3個の属性、すなわち、android:id、app:showAsAction、android:titleは必ず記述する必要があります。それぞれ、以下に説明します。

  • idは画面部品と同じくR値として使用するidです。
  • app:showAsActionはアクションバーに表示させるかどうかの設定です。「never」とすると、その選択肢はオーバーフローメニューに格納されます。「always」とすると、常にアクションバーに表示されます。ただし、「always」とすると、画面サイズによっては狭いアクションバー内に選択肢がひしめくことになるので、Androidとしては、「ifRoom」を推奨しています。これは、アクションバーに表示する余裕がある場合は表示し、ない場合はオーバーフローメニューに格納するようになります。
  • android:titleは選択肢の表示文字列です。

[Note]app:showAsActionとandroid:showAsAction

 <item>タグのshowAsAction属性は、app:とandroid:の2種があります。これは、アクティビティクラスの継承元クラスによって変わってきます。

 通常のActivityを継承する場合はandroid:を使用し、AppCompatActivityを継承する場合はapp:を使用します。

 他に、アイコンを指定する「android:icon」属性もあります。オプションメニューの特徴として、android:icon属性が指定されている選択肢の場合、アクションバーに表示させる場合はアイコンのみが表示され、逆にオーバーフローメニューに格納された場合はタイトル文字列しか表示されません。

[Note]メニューの入れ子

 オプションメニューは、<item>タグ内にさらに<menu>-<item>タグの組合せを記述することで、選択肢を入れ子にすることができます。

次のページ
アクティビティへの記述

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Android Studio 2で始めるアプリ開発入門連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 齊藤 新三(サイトウ シンゾウ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook<個人紹介>WINGSプロジェクト所属のテクニカルライター。Web系製作会社のシステム部門、SI会社を経てフリーランスとして独立。屋号はSarva(サルヴァ)。HAL大阪の非常勤講師を兼務。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9565 2018/05/23 15:36

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング