ActionBarにアイコンを追加してみた
ちょっとプログラムをする時間などもできてきたので、本が出てからかなり時間は経ってますが、怪しいAndroidアプリ開発術に掲載しているPassGenの画面構成を変えて、HoneyComb以上のライブラリで使われているActionBarにアイコンを表示するようにしてみました。
こんな感じ
保存と閉じるのボタンを画面上のバーに表示させています。なんとなく最新版のOSに対応したって気になる。
ドキュメントとしては、
辺りを見てもらえばいいかと思いますが、それだけじゃなんなので、対応方法など。
PassGenでは、メニューの構築を次のように行ってます。
public boolean onCreateOptionsMenu (Menu menu) {
/*
* メニュー内容を XML で登録する
*/
MenuInflater lMi = new MenuInflater(getApplicationContext());
lMi.inflate(R.menu.optionsmenu, menu);
return true;
}
XMLにMenuItemを登録して、それを元にしてメニューを構築しています。ドキュメント見るともろに同じような記載があるわけですが、この場合は、XMLファイルの<item>の中にandroid:showAsAction="ifRoom"を追加することで、適用されます。
付録CD-ROMとか持っている人は、optionsmenu.xmlのitemにandroid:showAsAction="ifRoom"を追加して次のように設定すれば、できます。
<item android:id="@+id/optionsitem01" android:icon="@android:drawable/ic_menu_close_clear_cancel" android:title="@string/menuitem_message_close" android:showAsAction="ifRoom" ></item>
さて、ここで問題が1つ発生するわけですけど、サンプルはすべて1.6のSDK(SDKバージョン4)を基準に書かれています。
しかし、このActionBarが適用されるのはSDKバージョン11以降。どうすればいいのかってところですが、手軽にSDKバージョンをあげるには、次のようにします。
EclipseでProjectExplorerの該当プロジェクトのところで右クリック。
Properties(日本語版だとプロパティだったか)をクリックして、プロジェクトのプロパティから左のリストにあるAndroidを選択。そうするとライブラリの選択画面が出てきます。
ここのチェックを最新版にします。OKを押せばライブラリのバージョンアップは終わり。
次にManifestファイルを開いて、AndroidManifest.xmlタブをクリックしたら、uses-sdkを探します。ここを次のように書き換えましょう。
<uses-sdk android:minSdkVersion="[必要最低限のバージョン番号]" android:targetSdkVersion="[設定で選んだバージョン番号]" />
例えば、PassGenの場合は最低限が1.6で、読み込ませたライブラリは4.0.3のものですから、次のようになります。
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
これで、ActionBarが使える環境ならば、メニューではなくてバーにアイコンが追加されて、新しいUIっぽく見えます。
ActionBarが使えるようになるとGoogle+アプリとかGmailみたいに左右フリックで切り替えるようなこともできるようになるので、次はそれで左右フリックで保存画面にいけるようにしていきたいと思います。