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

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. アプリ マニフェストで、 <application> 要素を、AppCompat の NoActionBar テーマのいずれかを使用するように設定します。次の例を参照してください。これらのテーマのうちの 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);
    }

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

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

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

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