最も基本的な形式のアクションバーでは、アクティビティのタイトルが片方の側に表示され、オーバーフロー メニューがもう一方の側に表示されます。アプリバーはこのシンプルな形式でユーザーに有用な情報を提供し、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
をアクティビティのアプリバーとして設定する手順は以下のとおりです。
- サポート ライブラリの設定で説明したように、v7 appcompat サポート ライブラリをプロジェクトに追加します。
- アクティビティで
AppCompatActivity
を拡張します。Kotlin
class MyActivity : AppCompatActivity() { // ... }
Java
public class MyActivity extends AppCompatActivity { // ... }
注:
Toolbar
をアプリバーとして使用するアプリのすべてのアクティビティにこの変更を適用します。 - アプリ マニフェストで、appcompat の
NoActionBar
テーマのいずれかを使用するように<application>
要素を設定します。これらのテーマのうちの 1 つを使用すると、アプリがネイティブActionBar
クラスを使用してアプリバーを提供しなくなります。次に例を示します。<application android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
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"/>
アプリバーの高さに関する推奨事項については、マテリアル デザインの仕様をご覧ください。
ツールバーはアプリバーとして使用されるため、ツールバーをアクティビティのレイアウトの上部に配置します。
- アクティビティの
onCreate()
メソッドでアクティビティのsetSupportActionBar()
メソッドを呼び出し、アクティビティのツールバーを渡します。このメソッドにより、ツールバーがアクティビティのアプリバーとして設定されます。次に例を示します。Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my) // Note that 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] アイテムのみが含まれます。アクションの追加と処理で説明したように、追加のアクションをアクションバーとオーバーフロー メニューに追加できます。
アプリバー ユーティリティ メソッドの使用
ツールバーをアクティビティのアプリバーとして設定すると、v7 appcompat サポート ライブラリの ActionBar
クラスによって提供されるさまざまなユーティリティ メソッドにアクセスできます。このアプローチを使用すると、アプリバーの表示と非表示の切り替えなど多くの便利な機能を実装できます。
ActionBar
ユーティリティ メソッドを使用するには、アクティビティの getSupportActionBar()
メソッドを呼び出します。このメソッドは、appcompat の ActionBar
オブジェクトへの参照を返します。参照を取得したら、いずれかの ActionBar
メソッドを呼び出してアプリバーを調整できます。たとえば、アプリバーを非表示にするには ActionBar.hide()
を呼び出します。