アプリのメニューを作成する。

アンドロイドのメニュー(設定っぽい)ボタンがあると思います。

このボタンに関しては、各アプリごとに独自のメニューを追加する事が可能となります。

 

menu

 

ボタンのデザインに関してはメニュー用のアイコン一覧(ic_menu_)

で書いたものが使用できます。

 

作成をするには、まずmenu用のxmlを作成します。

xmlmake

をクリックすると、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と入れる事で使用が可能となります。

 

上記の設定を行って、現状ではメニューを出す事ができません。

メニュー実行時には下記のような順番でファンクションが実行されます。

maps

 

全てのファンクションに関しては、booleanので値を返す必要があるのですが、選択をした時などは通常はreturn trueで問題ありません。

Activityのクラスの中にonCreateOptionsMenuというファンクションを作成します。このファンクションに下記の用に設定をします。

public boolean onCreateOptionsMenu(Menu menu){
 super.onCreateOptionsMenu(menu);
 getMenuInflater().inflate(R.menu.menu,menu);
 return true;
}

このファンクションはメニューボタンをクリックすると自動で実行されます。(implementsは必要ありません。)

この中で、メニューボタンに先ほどxmlで作成したメニューを適合させます。

 

以上の設定で、パブリッシュを行うとメニューが表示されます。

menu

 

 

また、文字の編集や保存などを利用する時に、メニューの中でその段階では使用できないもの、または使用したくないものに関しては、onPrepareOptionsMenuの中でボタンの反応を有効か無効化を設定するととても便利です。

public boolean onPrepareOptionsMenu(Menu menu){
 super.onPrepareOptionsMenu(menu);
 menu.findItem(R.id.item1).setEnabled(false);
 return true;
}

setEnableで簡単に利用ができます。上記の設定を行うと下記のように半透明になりボタンがクリックできなくなります。

menu2

 

上記の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番目のメニューを選択する事で、アプリが終了するような機能を実装しております。

 

また、アイテム数が増えると自動で、その他と言う項目のメニューができて、その他のページを項目をリストで確認する事ができます。

other

 

項目リストに関しては、チェックボックスを実装可能なので、簡単な設定であればそちらの方においてもよいかと思います。

前後の記事

前の記事:

次の記事:

関連の記事

コメント

:D kassyi

システムアイコンについてですが、自分でアイコンをリソースに追加する必要はなく@android:drawable/で参照できるようです。ご存知かもしれませんが私が調べた検索ワードではトップだったので念のため。

:D kassyi

半角で書いた<name>が消えてしまいました…w @android:drawable/<name>です。

コメントの投稿

  • サイト内検索

新作アプリの紹介

関連サイトの紹介

アンドロイドアプリ開発TIPS
きぐるみカメラ
ふらいぱん
アンドロイドのデザイン集
Page top↑