アプリバーをセットアップする

Compose の方法を試す
Jetpack Compose は、Android で推奨される UI ツールキットです。Compose でコンポーネントを追加する方法について説明します。

最も基本的な形式では、アクションバーの片側にアクティビティのタイトルが表示され、反対側にオーバーフロー メニューが表示されます。この基本的な形式であっても、アプリバーは有用な情報をユーザーに提供し、Android アプリのデザインに一貫性をもたらします。

Android 版「今何してる?」アプリのアプリバーを示す画像
図 1. 「Android 最新情報」アプリのアクション アイコン付きのアプリバー。

デフォルトのテーマを使用するすべてのアクティビティに、アプリバーとして ActionBar が表示されます。アプリバーの機能は、さまざまな Android リリースを通じてネイティブ ActionBar に追加されています。その結果、ネイティブ ActionBar の動作は、デバイスが使用している Android のバージョンによって異なります。

一方、AndroidX AppCompat ライブラリのバージョン Toolbar には機能が追加されています。つまり、これらの機能は、AndroidX ライブラリを使用するデバイスで使用できます。

このため、アクティビティのアプリバーを実装するには、AndroidX ライブラリの Toolbar クラスを使用します。AndroidX ライブラリのツールバーを使用すると、さまざまなデバイスでアプリの動作が一貫するようになります。

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

Toolbar をアクティビティのアプリバーとして設定する手順は以下のとおりです。
  1. AndroidX の概要の説明に沿って、AndroidX ライブラリをプロジェクトに追加します。
  2. アクティビティが AppCompatActivity を拡張していることを確認します。

    Kotlin

    class MyActivity : AppCompatActivity() {
      // ...
    }

    Java

    public class MyActivity extends AppCompatActivity {
      // ...
    }
  3. アプリ マニフェストで、次の例に示すように、AppCompat の NoActionBar テーマのいずれかを使用するように <application> 要素を設定します。これらのテーマのうちの 1 つを使用すると、アプリがネイティブ ActionBar クラスを使用してアプリバーを提供しなくなります。
    <application
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        />
  4. Toolbar をアクティビティのレイアウトに追加します。たとえば、次のレイアウト コードでは Toolbar が追加され、アクティビティの上に浮いているように表示されます。
    <androidx.appcompat.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"/>

    アプリバーの高さに関する推奨事項については、マテリアル デザインの仕様をご覧ください。

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

  5. 次の例に示すように、アクティビティの onCreate() メソッドでアクティビティの setSupportActionBar() メソッドを呼び出し、アクティビティのツールバーを渡します。このメソッドは、ツールバーをアクティビティのアプリバーとして設定します。

    Kotlin

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_my)
        // The Toolbar defined in the layout has the id "my_toolbar".
        setSupportActionBar(findViewById(R.id.my_toolbar))
    }

    Java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(myToolbar);
    }

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

アプリバー ユーティリティ メソッドを使用する

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

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