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

Compose を試す
Jetpack Compose は Android で推奨される UI ツールキットです。Compose でコンポーネントを追加する方法を学習します。

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

Now in Android アプリのアプリバーを示す画像
図 1. 「Now in 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> 要素を設定します。これらのテーマのいずれかを使用すると、アプリはネイティブの 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() を呼び出します。