このサイトでは、分析、カスタマイズされたコンテンツ、および広告に Cookie を使用します。このサイトを引き続き閲覧すると、Cookie の使用に同意するものと見なされます。
Hi, Developers,
straightapps.com ロゴ
作成 June 3, 2022
トップページ > Android 開発トップ > Android Studio で ActionBar を非表示にする
line
Android 開発
line

ここでは、Android Studio で ActionBar を非表示にするコードについて、書いています。

ノート PC に、Visual Studio Community 2022 の C++ によるモバイル開発機能と、 その時点で最新だった Android Studio をインストールしました。

インストール直後、まず最初に「Android Studio で新規プロジェクトを作成する」のように、 基本となる Empty Activity を作成し、実機で動作させるまでテストしました。

特に問題もなく動作しましたのでそれでいいのですが、 気になる点が 1 つありました。

Empty Activity

画面最上部にタイトル欄が見えますが、 画面デザインの定義ファイル activity_main.xml にはこの領域は定義されていませんので、簡単に取り外すことはできない様子です。

Empty Activity の構成は、 AdMob ActivityNative C++ の基本となっているようですから、どのように表示されているかを調べ、不要なら消す方法を確認しました。

ちなみにこの領域は「タイトルバー」や「キャプション」ということではなく、 本来は次の AdMob プロジェクトの画面イメージのように、メニューを配置したりして使う 「アクションバー」という名称らしいです。

MyAdMob Activity

Windows では、システムメニューや閉じるボタンなどがあっても、アプリ名が表示されている領域はタイトルバーとかキャプションとか呼びますが、 Android でなぜこの領域をそう呼ばないかは、 ここにアイコンやメニューを配置して操作しやすくする、という目的があるからだそうです。 どう使うのかは 「Android actionbar(アクションバー)の便利な使い方 7 選」に詳しく書かれています。 ですので「アクションバー」という呼び方で統一します。

なお、使用している Android Studio は、2022 年 5 月上旬にインストールした 2021.1.1 Patch 3 の Bumblebee から、 「Android Studio をアップデートする」 のように更新を行った、2021.2.1 の Chipmunk です。

android studio chipmunk

もしまだ基本となる「エンプティ・アクティビティ」をテストしていない場合は、 「Android Studio で新規プロジェクトを作成する」 からご覧になることをおすすめします。

▼ セクション一覧

2 種類の方法で成功 - 解決方法へ直行!
themes.xml を書き換える
getSupportActionBar を使う

なお、本サイトの ご利用に際しては、必ずプライバシーポリシー(免責事項等)をご参照ください。

2 種類の方法で成功(解決方法)

投稿 June 3, 2022

いつもなら、うまくいかなかった方法も含め、試した手順通りにページを構成しているのですが、 ここではまず解決策 2 種類を先に記録します。

まずその 1、正統派と思われる、テーマの書き換えです。

これが適したケースは、どうやらアプリを通してアクションバーが不要なケースです。

理由はこのあと「themes.xml を書き換える」に書きますが、 プロジェクトに 2 つある、themes.xml に定義されている「親テーマ」を書き換えます。

Android Studio の画面左側、Project の構成リストから、 resvaluesthemes と、順番に開いていきます。

themes.xml

みつかった themes.xml をダブルクリックして、エディタで開きます。

themes.xml

するとすぐに、Theme.MyEmptyTest のように、 アプリ名 ( この場合は MyEmptyTest がアプリ名です。 ) の付いたテーマの定義があり、 その親テーマが parent で定義されていて、 Theme.MaterialComponents.DayNight.DarkActionBar が指定されています。

この DarkActionBarNoActionBar に書き換えると、 アクションバーは表示されなくなります。

themes.xml

実機を接続して確認すると、アクションバーは、画面が縦でも横でも表示されませんでした。

画面イメージ

もう 1 つある themes.xml (night)同じように書き換えます。 これを忘れると、ダークモードではアクションバーが表示されることになります。 ダークモードについては、 「ダークモードと色反転」 に書かれています。




続いてその 2、getSupportActionBar をコードに追加、です。

これが適したケースは、どうやらアプリの画面個別でアクションバーが不要なケースです。

理由はこのあと「getSupportActionBar を使う」に書きますが、 MainActivity.java などで、setContentView 関数でビューを設定したあとに、以下のコードを追加します。

ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
    actionBar.hide();
}

意味としては、getSupportActionBar 関数でアクションバー情報を取得し、 変数 actionBar に取得できた場合は hide 関数を呼び出して非表示にする、です。

その 1 と連続して試す場合は、DarkActionBar に戻すことを忘れないでください。

こちらも実機を接続して確認すると、アクションバーは、画面が縦でも横でも表示されませんでした。

▲ページ先頭へ

themes.xml を書き換える

投稿 June 3, 2022

上記手順その 1themes.xml を書き換える理由について、調べた部分を記述します。

画面のデザイン activity_main.xml にはアクションバーに関する定義はありませんので、 アプリの設定を行っている AndroidManifest.xml を開いて確認します。 Project の manifests に入っています。

AndroidManifest.xml

manifests の中にある AndroidManifest.xml をエディタで開くと、 application タグの中に、テーマの設定 android:theme がみつかります。

android:theme="@style/Theme.MyEmptyTest"

これを見ると、Theme.MyEmptyTest が指定されていることがわかります。 ここで、MyEmptyTest はアプリ名(プロジェクト名)ですので、 作成したプロジェクトの名前になります。

この Theme.MyEmptyTest がどこで定義されているかを調べると、project で resvaluesthemes と開いていったとろこにある、 themes.xml にみつかります。

themes.xml

みつかった themes.xml をダブルクリックして、エディタで開きます。

themes.xml

Theme.MyEmptyTest は style タグで、 Theme.MaterialComponents.DayNight.DarkActionBar を親テーマとして生成されていることがわかります。 DarkActionBar が、アクションバーを含んだテーマのようです。 ちょっと古そうですが、 「スタイルとテーマ」 が参考になるかもしれません。

これを、 Theme.MaterialComponents.DayNight.NoActionBar のように、最後の部分を NoActionBar に書き換えと、親テーマがアクションバーを持たなくなるようです。

themes には、themes.xml が 2 つあります。

ダークモード用の themes.xml (night) も同様に書き換える必要があります。 これを忘れると、ダークモードになったとき、おかしな表示になるでしょう。

改めて、ダークモードについては、 「ダークモードと色反転」 に書かれています。

▲ページ先頭へ

getSupportActionBar を使う

投稿 June 3, 2022

上記手順その 2getSupportActionBar 関数を追加する理由について、調べた部分を記述します。

まず、Project の java の、 com.straightapps.myemptytest のようなパッケージ名の中にある、 MainActivity.java を開きます。

MainActivity.java

onCreate 関数で、 この時点で唯一のビュー R.layout.activity_mainsetContentView 関数で設定しています。

MainActivity.java

setContentView 関数の呼び出しのあとに、次のコードを追加しました。

ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
    actionBar.hide();
}

追加した直後は、上のイメージのように ActionBar クラスが未定義のため赤く表示されます。 この定義をインポートしなくてはいけません。

赤くなっている ActionBar をマウスでポイントすると、理由が表示されます。

ActionBar を解決できません

適切な import がないため、ActionBar が未定義となっている、ということです。

ヒントの左下にある Import class をクリックすると、 自動的に ActionBar が定義されているパッケージを import に加えてくれます。

これで、自動的に適切な import 文が追加され、ActionBar が解決されました。

念のため、省略表示されている import を展開して確認します。

androidx.appcompat.app.ActionBar

パッケージ名の次の行に、import androidx.appcompat.app.ActionBar; 行が追加されたことがわかります。

これで、ビューからアクションバーを取得し、 アクションバーが取得できたなら、hide 関数で非表示にする、 という流れができました。

▲ページ先頭へ
line
関連トピックス
line

Android Studio をインストールする

2022 年 5 月に、ノート PC に Android Studio を新規にインストールした様子について書いています。

Android Studio で新規プロジェクトを作成する

インストールしたばかりの Android Studio を試すため、Empty Activity を作成し、実機で動作させてみます。

Android Studio で全画面プロジェクトを作成する

インストールしたばかりの Android Studio を試すため、Fullscreen Activity を作成し、実機で動作させてみます。

素因数分解トレーニング

以降の数学の基本となる素因数分解の基本部分を、ひたすらトレーニングするための JavaScript コードについて書いています。

因数分解トレーニング(1)

因数分解の公式の一部について、ひたすらトレーニングするための JavaScript コードについて書いています。

line
その他のおすすめ
line

Android 開発に関する記事をまとめた Android 開発トップ もご覧ください。



© 2017-2022 StraightApps.com 無断転載を禁じます。No reproduction without permission.