アクションバーの便利な使い方

Action Bar(アクションバー)はAndroid 3.0(API11)から追加された機能ですが、Support Libraryを利用することで、2.1以降のAndroidでも利用することができます。Support Libraryは通常Android SDKからダウンロードすることができます。

アクションバーにはタイトルを表示したり、メニューを追加したりすることができます。今回はこのアクションバーの便利な使い方を7つ、紹介していきます。以下に紹介するものはすべてSupport Libraryを利用していますので、お試しの際はSupport Libraryを導入してください。

また、事前にAndroidManifest.xmlにて利用するテーマをTheme.AppCompatで始まるものに変更してください。以下に例を記述します。
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light" >
<activity
android:name="com.example.actionbartips.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
さらにアクションバーを使用するアクティビティにて、MenuInflaterを使用する必要があります。具体的には以下のようにします。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}

その1 アクションバーにアイコンを表示する

アクションバーは通常オーバーフローボタンとしてメニューアクションが1つにまとめられています。これらのメニューを1つにまとめずにアイコンとして1つずつ表示させるようにしましょう。
通常のアクションバー

通常のアクションバー

以下のようにメニューのxmlにてxmlns:appという名前空間を設定します。設定後、app:showAsAction="ifRoom"とすると、アイコンを表示できるスペースがアクションバーに存在する場合にはアイコンを表示します。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >

<item
android:id="@+id/action_call"
android:icon="@drawable/ic_action_call"
android:orderInCategory="100"
app:showAsAction="ifRoom"
android:title="@string/action_call"/>

<item
android:id="@+id/action_favorite"
android:icon="@drawable/ic_action_favorite"
android:orderInCategory="101"
app:showAsAction="ifRoom"
android:title="@string/action_favorite"/>

<item
android:id="@+id/action_good"
android:icon="@drawable/ic_action_good"
android:orderInCategory="102"
app:showAsAction="ifRoom"
android:title="@string/action_good"/>

</menu>
以上の設定を行うと、以下のようにアクションバーにアイコンが表示されます。
アイコンを表示したアクションバー

アイコンを表示したアクションバー

こちらのほうが一目でわかりやすいですし、ユーザーはメニューアクションを押す際に一手間省くことができます。

ちなみにアイコンはこちらのThe Action Bar Icon Packを利用すると便利です(サイトはこちら)。

その2 アクションバーを画面下に表示する

アクションバーが画面下に配置されたUIのことを、スプリットアクションバー(split action bar)といいます。これは、厳密にはアクションバーが下だけに存在するのではなく、上下に分割されて存在するのでこのように呼ばれます。スマートフォンなどの画面横幅が狭いデバイスに対応しています。

このUIを採用するにはAndroidManifest.xmlにて、以下のように設定します。
<activity
android:name="com.example.actionbartips.MainActivity"
android:label="@string/app_name"
android:uiOptions="splitActionBarWhenNarrow" >
<meta-data android:name="android.support.UI_OPTIONS"
android:value="splitActionBarWhenNarrow" />

<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
activityタグにuiOptionsを設定します。また、API11未満の端末に対応するためにmeta-dataでuiOptionsを定義します。これを設定すると、以下のようになります。

スプリットアクションバーを設定した様子

スプリットアクションバーを設定した様子

アクションバーが画面下部に配置され、iOSで見かけるようなUIとなりました。


>>便利な使い方、その3に続きます。