Join us on the livestream at Android Dev Summit on 7-8 November 2018, starting at 10AM PDT!

アプリバーのセットアップ

最も基本的な形式のアクションバーでは、アクティビティのタイトルが片方の側に表示され、オーバーフロー メニューがもう一方の側に表示されます。アプリバーはこのシンプルな形式でユーザーに有用な情報を提供し、Android アプリのルック アンド フィールを統一しています。

図 1 アプリタイトルとオーバーフロー メニューが表示されたアプリバー。

Android 3.0(API レベル 11)以降では、デフォルトのテーマを使用するすべてのアクティビティが ActionBar をアプリバーとして備えています。ただし、さまざまな Android リリースを通じて、ネイティブ ActionBar にアプリバーの機能が徐々に追加されています。その結果、使用中の Android システムのバージョンと端末によってネイティブ ActionBar の動作が異なります。一方、Toolbar のサポート ライブラリのバージョンには最新の機能が追加されており、サポート ライブラリを使用できるすべての端末でこれらの機能を使用できます。

そのため、サポート ライブラリの Toolbar クラスを使用して、アクティビティのアプリバーを実装する必要があります。サポート ライブラリのツールバーを使用すると、さまざまな端末でアプリが一貫して動作するようになります。たとえば、Toolbar ウィジェットを使用すると、Android 2.1(API レベル 7)以降を搭載している端末でマテリアル デザインの操作感を実現できますが、ネイティブ アクションバーは、Android 5.0(API レベル 21)以降を搭載した端末でない限り、マテリアル デザインをサポートしません。

アクティビティへのツールバーの追加

次の手順は、Toolbar をアクティビティのアプリバーとしてセットアップする方法です。
  1. サポート ライブラリのセットアップで説明したように、v7 appcompat サポート ライブラリをプロジェクトに追加します。
  2. アクティビティで AppCompatActivity を拡張します。
    public class MyActivity extends AppCompatActivity {
      // ...
    }
    

    注: Toolbar をアプリバーとして使用するアプリのすべてのアクティビティにこの変更を適用します。

  3. アプリ マニフェストで、appcompat の NoActionBar テーマのいずれかを使用するように <application> 要素を設定します。これらのテーマのうちの 1 つを使用すると、アプリがネイティブ ActionBar クラスを使用してアプリバーを提供しなくなります。次に例を示します。
    <application
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        />
    
  4. Toolbar をアクティビティのレイアウトに追加します。たとえば、次のレイアウト コードにより、Toolbar が追加され、アクティビティの上に浮いているように表示されます。
    <android.support.v7.widget.Toolbar
       android:id="@+id/my_toolbar"
       android:layout_width="match_parent"
       android:layout_height="?attr/actionBarSize"
       android:background="?attr/colorPrimary"
       android:elevation="4dp"
       android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
    

    マテリアル デザインの仕様では、アプリバーに 4 dp のエレベーションを設定することを推奨しています。

    ツールバーはアプリバーとして使用されるため、ツールバーをアクティビティのレイアウトの上部に配置します。

  5. アクティビティの onCreate() メソッドで、アクティビティの setSupportActionBar() メソッドを呼び出し、アクティビティのツールバーを渡します。このメソッドにより、ツールバーがアクティビティのアプリバーとして設定されます。次に例を示します。
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(myToolbar);
        }
    

これで、アプリに基本的なアクションバーが追加されました。デフォルトでは、アクションバーには、アプリ名とオーバーフロー メニューのみが含まれます。オプション メニューには、最初は [Settings] アイテムのみが含まれます。アクションの追加と処理で説明したように、追加のアクションをアクションバーとオーバーフロー メニューに追加できます。

アプリバー ユーティリティ メソッドの使用

ツールバーをアクティビティのアプリバーとして設定すると、v7 appcompat サポート ライブラリの ActionBar クラスによって提供されるさまざまなユーティリティ メソッドにアクセスできます。このアプローチを使用すると、アプリバーの表示、非表示を切り替えるなど、多くの便利な機能を実装できます。

ActionBar ユーティリティ メソッドを使用するには、アクティビティの getSupportActionBar() メソッドを呼び出します。このメソッドは、appcompat の ActionBar オブジェクトへの参照を返します。その参照を取得したら、いずれかの ActionBar メソッドを呼び出して、アプリバーを調整することができます。たとえば、アプリバーを非表示にするには、ActionBar.hide() を呼び出します。