Androidアプリのアプリバー(アクションバー)の表示・非表示を変更する方法
※開発環境としてAndroid Studioを使用しています。
アプリバー(アクションバー)の定義
AndroidStudioのデフォルト設定で確認
アプリバー(アクションバー)は、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:themeにTheme.MaterialComponents.DayNight.DarkActionBarを指定します。すると、themes.xmlのstyleを経由しなくても以下のようになります。
自分でスタイルを設定する場合
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等に設定される色はシークバーやラジオボタンなど各コンポーネントで使われる色になります。
その後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はアプリバー(アクションバー)が含まれないテーマです。
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にすることでアプリバー(アクションバー)が表示されません。
投稿されたコメント一覧