Android SupportLibraryのActionBarを利用する

AndroidのサポートライブラリのRev18が公開されました。
それに伴いサポートライブラリでActionBarが使えるようになりました!!!
今まではActionBarをGBやFroyoでサポートするためにはActionBarSherlockなどにお世話になっていましたが
組み込まれましたので早速使い方を書いてみます。

まずActionBarはライブラリのv4ではなくv7に組み込まれています。
(APIレベルv7(2.1)以上で利用可能です)

とりあえずワークスペース内に、v7のappcompatのプロジェクトをインポートします

importimport1

 

ちなみにこの画面ではすでに追加しているためにエラーになっていますが、通常であれば問題なくインポートできるはずです

次に、自分のアプリのプロジェクトにライブラリプロジェクトのリンクとjarのインポートを行います。

import2import2

 

(jerichoは無視してくださいね)

android-suport-v4とv7のappcompatのjarをlibs配下に配置してビルドパスに追加しておきます。

これで準備は完了です。

下記の順番にコードを追加しましょう。

 

AndroidManifest.xml

テーマをActionbarCompatのものを指定します。

    <application
        android:allowBackup="true"
        android:icon="@drawable/icon"
        android:label="@string/applicationname"
        android:theme="@style/Theme.AppCompat.Light" >
/>
(Theme.AppCompat.Light.DarkActionBarなんてのもあるよ)

次にActivityの継承元を変更します。
import android.support.v7.app.ActionBarActivity;

public class BaseActivity extends ActionBarActivity {

}
これでソースもほとんど終わりです。

それではActionBarを呼び出してみましょう
//ActionBar
getSupportActionBar(); //ActionBarのインスタンス取得

//MenuItemなどの追加時の注意
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
//ではなく下記のようにしてください
 MenuItemCompat.setShowAsAction(menuItemInstance, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
なおActionbarActivityでは、onMenuItemSelectedがOverrideできなくなっています。

NavigationDrawerで利用している場合などはOnMenuIemSelectedを利用していると思うのですが、

onOptionsItemSelectedでイベントを取得できますので処理をこちらに移動してあげてください。

これを実行すると下記のようになります

device-2013-07-25-032407device-2013-07-25-032509

 

ちなみに英語のわかる方ならたぶんこの動画を見れば一発かと。。。
Google+
追記。NavigationDrawerでドロワーをOpenCloseしている際にinvalidateOptionsMenuを読んでいると落ちるので注意(APILevel11からのメソッドなので。。)

関連記事

コメントする

メモ - 下記に表示されているHTML属性は利用できます HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*