アンドロイドのメニュー(設定っぽい)ボタンがあると思います。
このボタンに関しては、各アプリごとに独自のメニューを追加する事が可能となります。
ボタンのデザインに関してはメニュー用のアイコン一覧(ic_menu_)
で書いたものが使用できます。
作成をするには、まずmenu用のxmlを作成します。
をクリックすると、menuと言う項目がありますので、menu.xmlを作成をしてください。
また、システムアイコンに関しては、自分でdrawableの中にファイルを入れる必要があります。
[res]ディレクトリ内に[menu]ディレクトリができていて、その中にmenu.xmlが作成されているはずです。
下記のように記述をします。
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/item1" android:title="btn1" android:icon="@android:drawable/ic_menu_edit" ></item> <item android:id="@+id/item1" android:title="btn2" android:icon="@android:drawable/ic_menu_add" ></item> <item android:id="@+id/item1" android:title="btn3" android:icon="@*android:drawable/ic_menu_archive" ></item> <item android:id="@+id/item1" android:title="btn4" android:icon="@android:drawable/ic_menu_save" ></item> <item android:id="@+id/item1" android:title="btn5" android:icon="@android:drawable/ic_menu_more" ></item> <item android:id="@+id/item1" android:title="btn6" android:icon="@android:drawable/ic_menu_call" ></item> </menu>
titleには表示される文字を入力します。
好きなアイコンを利用していると下記のようなエラーが吐き出されます。
Resource is not public.
現在確認をしておりますが、フォルダのマークや添付のマークなど、一般のアンドロイドアプリでは一定の機能を示す画像をボタンとすて設定をしてしまうと他のアプリで使いにくくなる為に制限をかけている画像がいくつか存在するようです。
そのようなシステムアイコンを利用する場合には、下記のように記載をします。
android:icon="@*android:drawable/ic_menu_archive"
@*androidと入れる事で使用が可能となります。
上記の設定を行って、現状ではメニューを出す事ができません。
メニュー実行時には下記のような順番でファンクションが実行されます。
全てのファンクションに関しては、booleanので値を返す必要があるのですが、選択をした時などは通常はreturn trueで問題ありません。
Activityのクラスの中にonCreateOptionsMenuというファンクションを作成します。このファンクションに下記の用に設定をします。
public boolean onCreateOptionsMenu(Menu menu){ super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.menu,menu); return true; }
このファンクションはメニューボタンをクリックすると自動で実行されます。(implementsは必要ありません。)
この中で、メニューボタンに先ほどxmlで作成したメニューを適合させます。
以上の設定で、パブリッシュを行うとメニューが表示されます。
また、文字の編集や保存などを利用する時に、メニューの中でその段階では使用できないもの、または使用したくないものに関しては、onPrepareOptionsMenuの中でボタンの反応を有効か無効化を設定するととても便利です。
public boolean onPrepareOptionsMenu(Menu menu){ super.onPrepareOptionsMenu(menu); menu.findItem(R.id.item1).setEnabled(false); return true; }
setEnableで簡単に利用ができます。上記の設定を行うと下記のように半透明になりボタンがクリックできなくなります。
上記のbtn1が押せない状態になってます。
ボタンクリックのアクションに関しては、下記のファンクションを追加します。
public boolean onOptionsItemSelected(MenuItem item){ switch(item.getItemId()){ case R.id.item1: break; case R.id.item2: finish(); break; case R.id.item3: break; case R.id.item4: break; case R.id.item5: break; case R.id.item6: break; default: break; } return super.onOptionsItemSelected(item); }
となります。returnの値に関しては、booleanを返しますが、特にtrueでもfalseでも、動作の違いが少し分からなかったので、上記のように設定をおこなうのが無難なようです。
※上記では2番目のメニューを選択する事で、アプリが終了するような機能を実装しております。
また、アイテム数が増えると自動で、その他と言う項目のメニューができて、その他のページを項目をリストで確認する事ができます。
項目リストに関しては、チェックボックスを実装可能なので、簡単な設定であればそちらの方においてもよいかと思います。