Android 2.3 以下でもActionBar

ActionBarSherlock ではなくSDKについてくるサポートライブラリを使う方法。

SDK は C:android-sdks にインストールされているとします。
開発はeclipse+ADTを使います。

サポートライブラリの準備

SDK マネージャーを開き、”Android Support Librarly” がインストールされているか確認。
revision 18 未満の場合はアップデート

サポートライブラリのインストール

Eclipse で File → Import
“Existing Projects into Workspace” を選択 → Next
“Select root directory” にチェックを入れ、”C:android-sdksextrasandroidsupportv7appcompat” を指定
“Copy projects into workspace” にチェックを入れる
→ Finish

この時点では 「The project cannot be built until build path errors are resolved」 などとエラーが出ます。

Eclipse の Package Explorer で、 インポートしたプロジェクトの “libs” を広げ、
中にある android-support-v4.jar と android-support-v7-appcompat.jarをそれぞれ右クリックし、Build Path → Add to Build Path

この時点でエラーは消えてるはず。

Pakce Explorer で、 インポートしたプロジェクトを右クリック → Build Path → Configure Build Path
“Order and Export” タブを開き、先ほど追加した 2つの jar にチェックを入れる。
“com.android.ide.eclipse.adt.DEPENDENCIES” のチェックを外す。

アプリケーションの作成

新規にAndroidアプリケーションを作成。
“Minimum Required SDK” には API 7 以上を選択します。
新規アプリケーション

Activity のテンプレートは “Blank Activity” にします。
Navigation Type は None しか選べませんが、後でコードを追加することで アクションバーにタブを配置したり、
スワイプでタブを切り替えたりできるようにできます。

Project Explorer で、 今作ったプロジェクトを右クリック → Properties
左のペインで “Android” を選択。
“Library” ペインで Add
“android-support-v7-appcompat” にチェックを入れる → OK

AndroidManifest.xml を編集
activity に theme を指定します。

<activity
    android:name="com.example.supportactionbarexample.MainActivity"
    android:label="@string/app_name"
    android:theme="@style/Theme.AppCompat.Light.DarkActionBar">

Activity のコードを編集。
android.app.Activity ではなく android.support.v7.app.ActionBarActivity を継承する

package com.example.supportactionbarexample;

import android.os.Bundle;
import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

うまくいけば、アクションバーが表示されるようになります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です