2012年11月19日月曜日

Android Android2.xでActionBarを使用する

Android 3.0(API level 11)から導入されたAction Barを Android 2.x系でも使用できるようにするには、 ActionBarSherlockライブラリを使用します。

導入方法はコチラが参考になります。
Android 2.xでAction Barが使えるActionBarSherlockの使い方

使い方はコチラが参考になります。
ActionBarSherlockライブラリを使って、2.xでもActionBarを使用する

ActionBarSherlockライブラリを作成する

ActionBarSherlockを下記サイトよりダウンロードし解凍します。
http://actionbarsherlock.com/

eclipseメニューの「ファイル」→「新規」より「Android」ノードの「既存コードからのAndroidプロジェクト」を選択します。

「RootDirectory」に解凍したActionBarSherlockフォルダ内のlibraryを指定します。
「Projects」に表示されているlibraryをチェックONします。
「プロジェクトをワークスペースにコピー」をチェックONします。

「library」プロジェクトが作成されるので、名前はなんでもいいですが「ActionBarSherlockLib」にリネームします。

Javaコンパイラーのバージョンが1.6以前だとエラーになるので変更します。
「ActionBarSherlockLib」プロジェクトを右クリックし「プロパティー」を選択します。
「Java コンパイラー」ノードを選択し「コンパイラー準拠レベル」を1.6に変更します。


ActionBarSherlockライブラリを参照する

ActionBarSherlockLibライブラリを使用する側のプロジェクトを作成します。
Build SDKはAndroid 4.0 (API 14)、Min SDKをAndroid 2.1 (API 7)にしました。

作成したプロジェクトを右クリックし「Android」ノードを選択します。
ライブラリーに「ActionBarSherlockLib」を追加します。

ActionBarを表示させたいActivityはSherlockActivityを継承するよう変更します。
自動で生成されるonCreateOptionMenuメソッドはSherlockActivityではfinalメソッドなのでOverrideできないのでコメントアウトします。
またonCreateメソッドではをテーマを設定する必要があります。
setContentViewメソッドより前にテーマを設定するsetThemeメソッドを呼び出します。
テーマを設定せずにエミュレータで実行しようとすると、実行時エラーになり実行できません。
import com.actionbarsherlock.app.SherlockActivity;

import android.os.Bundle;

public class MainActivity extends SherlockActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setCpmtemtViewメソッドより前にテーマを設定する。
        setTheme(R.style.Theme_Sherlock);
        setContentView(R.layout.activity_main);
    }

//    SherlockActivityではOverrideできない。
//    @Override
//    public boolean onCreateOptionsMenu(Menu menu) {
//        getMenuInflater().inflate(R.menu.activity_main, menu);
//        return true;
//    }
}

Android 2.1
Activityを継承

Android 2.1
SherlockActivityを継承
テーマ「Theme_Sherlock」
Android 2.1
SherlockActivityを継承
テーマ「Theme_Sherlock_Light」
Android 4.0
Activityを継承

Android 4.0
SherlockActivityを継承

0 件のコメント: