久々にAndroidアプリの開発をしてみようと、Android Studio自体も3.2にバージョンアップして作成中。
昔ながらの縦に「…」が並んだボタンからメニューを表示をさせるようにしてみた。
Android Studioを日本語化しているので操作内容も翻訳版で。
①メニューリストのXMLを作成
・「string.xml」にメニューの文字を記述
app>src>main>res>string.xmlを編集する
<resources> <!-- アプリ名 --> <string name="app_name">テストアプリ</string> <!-- メニューアイテム --> <string name="menu_preference">設定</string> <string name="menu_update">バージョン情報</string> <string name="menu_information">このアプリについて</string> </resources>
・app>src>main>resに「menu」フォルダの作成
新規>ディレクトリー>名前に「menu」を入力してOK
・「menu」フォルダに「〇〇〇.xml」(例:menu_main.xml)ファイルの作成
新規>Menu リソース・ファイル>小文字で任意の名前を入力してOK
このXMLにメニューの内容を記述する。
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <item android:id="@+id/menu_preference" android:title="@string/menu_preference" app:showAsAction="never" /> <item android:id="@+id/menu_update" android:title="@string/menu_update" app:showAsAction="never" /> <item android:id="@+id/menu_information" android:title="@string/menu_information" app:showAsAction="never" /> </menu>
②MainActivityに記述
・アクションバーを表示
@Override public boolean onCreateOptionsMenu(Menu menu) { // menu_main.xml読み込み MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_main, menu); return true; }
・メニューのアイテムを選択した時
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_preference: Intent intent = new Intent(this, PreferenceActivity.class); startActivity(intent); return true; case R.id.menu_update: ・・・ case R.id.menu_information: ・・・ default: } return false; }
以上でメニューを作ることが出来た。
ただ、一昔前な感じ…なので、Gmailのアカウント切替時のような、メニューの内容を画面横からスライドさせて出すように変えたい。
とりあえずはアプリ全体の処理を大まかに出来るようになってからチャレンジしてみたい。