Android開発してて思った

Android開発をしていて思ったことを書いていきます

ActionBarに画像タブを表示させる

f:id:rikisha-blog:20140404155119p:plain
こんな感じに画像付タグボタンを作成するにはメニューレイアウトを変更します。
iPhoneのタブ切替みたいな機能がAndroidにもないのかなと探していたところ
発見しました。

まずはメニューレイアウトxmlタブにandroid:iconで画像を指定します。

/res/menu/main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/action_map"
        android:orderInCategory="100"
        android:icon="@android:drawable/ic_menu_mapmode"
        android:showAsAction="ifRoom"
        android:numericShortcut="1"
        android:title="@string/action_settings"/>

	<item
        android:id="@+id/action_list"
        android:orderInCategory="100"
        android:icon="@android:drawable/ic_menu_today"
        android:showAsAction="ifRoom"
        android:numericShortcut="2"
        android:title="@string/action_settings"/>
    
	<item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:icon="@android:drawable/ic_dialog_info"
        android:showAsAction="ifRoom"
        android:numericShortcut="3"
        android:title="test"/>
</menu>

タグボタンを押したときの処理は
Activity.onMenuItemSelected()が行います。
受け取ったidによって処理を切り替えます。

MainActivity.java

public class MainActivity extends Activity {
	
	@Override
	public boolean onMenuItemSelected(int featureId, MenuItem item) {
		int id = item.getItemId();
		
		// 押したアイテムのidで切り替える
		switch(id) {
			case R.id.action_map:
				Toast.makeText(this, "Map", Toast.LENGTH_SHORT).show();
				break;
			case R.id.action_list:
				Toast.makeText(this, "List", Toast.LENGTH_SHORT).show();
				break;
			case R.id.action_settings:
				Toast.makeText(this, "Setting", Toast.LENGTH_SHORT).show();
				break;
			default:
				break;
		}
		return true;
	}
}

ちなみにActionBarを下部に表示する場合は、
AndroidManifest.xmlタグに

android:uiOptions="splitActionBarWhenNarrow"

を追加する。

参考にしたサイト

Menu Resource | Android Developers