Androidアプリのアプリバー(アクションバー)の表示・非表示を変更する方法

Androidでアクションバーの表示・非表示を切り替える方法の解説

※開発環境としてAndroid Studioを使用しています。

アプリバー(アクションバー)の定義

AndroidStudioのデフォルト設定で確認

Androidでアクションバーの表示・非表示を切り替える方法の解説

アプリバー(アクションバー)は、AndroidManifest.xmlに定義されています。


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        
        android:theme="@style/Theme.Sample">
        
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

AndroidManifest.xml内のandroid:themeの部分でテーマを呼び出しています。

styleが呼び出されるthemes.xml側には以下のように設定されています。


<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    
    <style name="Theme.Sample" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
    
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>
</resources>

AndroidManifest.xmlのthemeの値とstyleのname属性(Theme.Sample)が一致しているはずです。

ここで設定されているstyleは親要素としてTheme.MaterialComponents.DayNight.DarkActionBarを持っており、この中にアプリバー(アクションバー)が含まれています。

表示・非表示を切り替える方法

表示する場合

デフォルトのまま使用する場合

themes.xmlを経由せずにAndroidManifest.xmlに直接デフォルトのテーマを書くこともできます。


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        
        android:theme="@style/Theme.MaterialComponents.DayNight.DarkActionBar">
        
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

android:themeTheme.MaterialComponents.DayNight.DarkActionBarを指定します。すると、themes.xmlのstyleを経由しなくても以下のようになります。

Androidでアクションバーの表示・非表示を切り替える方法の解説

自分でスタイルを設定する場合

themes.xmlにTheme.MaterialComponents.DayNight.DarkActionBarを継承したstyleを作り、設定したいitemをオーバーライドしていきます。


<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    
    <style name="Theme.Sample" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
    
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>
</resources>
name 解説
colorPrimary アプリバー(アクションバー)の背景色です。
colorPrimaryVariant 時計や電池残量が表示される部分の背景色です。
colorOnPrimary アプリバー(アクションバー)の文字色です。

その他のcolorSecondary等に設定される色はシークバーやラジオボタンなど各コンポーネントで使われる色になります。

Androidでアクションバーの表示・非表示を切り替える方法の解説

その後themes.xmlで設定したstyleのname属性と一致させるようにAndroidManifest.xmlのandroid:themeを指定します。


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        
        android:theme="@style/Theme.Sample">
        
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

themes.xmlのstyleのname属性がTheme.Sampleなので、AndroidManifest.xmlのandroid:themeにTheme.Sampleを指定します。これで設定したアプリバー(アクションバー)が読み込まれます。

表示しない場合

AndroidManifest.xmlで直接指定する場合


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        
        android:theme="@style/Theme.MaterialComponents.DayNight.NoActionBar">
        
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

AndroidManifest.xmlのandroid:themeに@style/Theme.MaterialComponents.DayNight.NoActionBarを指定します。

NoActionBarはアプリバー(アクションバー)が含まれないテーマです。

Androidでアクションバーの表示・非表示を切り替える方法の解説

themes.xmlで指定する場合

AndroidManifest.xmlで指定されているstyleに以下のように設定します。


<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    
    <style name="Theme.Sample" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>
</resources>

styleに継承する親要素をTheme.MaterialComponents.DayNight.NoActionBarにすることでアプリバー(アクションバー)が表示されません。

投稿されたコメント一覧

コメント投稿フォーム

必須項目
任意項目

ウェブサービス一覧