最も基本的な形式のアクションバーでは、アクティビティのタイトルが片方の側に表示され、オーバーフロー メニューがもう一方の側に表示されます。アプリバーはこの基本的な形式でユーザーに有用な情報を提供し、Android アプリのルック アンド フィールを統一しています。
デフォルトのテーマを使用するすべてのアクティビティが ActionBar をアプリバーとして備えています。さまざまな Android リリースを通じてネイティブ ActionBar にアプリバーの機能が追加されています。そのため、ネイティブ ActionBar の動作は、デバイスで使用されている Android のバージョンによって異なります。
一方、AndroidX AppCompat ライブラリの Toolbar のバージョンには機能が追加されています。つまり、AndroidX ライブラリを使用するデバイスではこれらの機能を使用できます。
このため、AndroidX ライブラリの Toolbar クラスを使用してアクティビティのアプリバーを実装する必要があります。AndroidX ライブラリのツールバーを使用すると、さまざまなデバイスでアプリが一貫して動作するようになります。
アクティビティへのツールバーの追加
Toolbar をアクティビティのアプリバーとして設定する手順は以下のとおりです。
- AndroidX の概要の説明に沿って、AndroidX ライブラリをプロジェクトに追加します。
- アクティビティが
AppCompatActivityを拡張していることを確認しますKotlin
class MyActivity : AppCompatActivity() { // ... }
Java
public class MyActivity extends AppCompatActivity { // ... }
- アプリ マニフェストで、
<application>要素を、AppCompat のNoActionBarテーマのいずれかを使用するように設定します。次の例を参照してください。これらのテーマのうちの 1 つを使用すると、アプリがネイティブActionBarクラスを使用してアプリバーを提供しなくなります。<application android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
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"/>
アプリバーの高さに関する推奨事項については、 マテリアル デザインの仕様 をご覧ください。
ツールバーはアプリバーとして使用されるため、ツールバーをアクティビティの レイアウトの上部に配置します。
- アクティビティの
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() を呼び出します。