Android アプリで ActionBar の背景色を変更する方法

公開日: : 最終更新日:2014/02/27 Android , ,

Android 3.x 系から追加された ActionBar。

開発中の Android アプリで ActionBar の背景色を変更する必要があったので対応しました。
その内容をメモしておきます。

icatch-bar_7241902618_mini

photo credit: marsmet511 via photopin cc

目次

1. 動作環境

動作環境ですが、Android アプリの開発には次の IDE を使っています。

android-2014-02-18-00-1

2. 変更手順

変更手順は次の通りになります。

テーマを作成しないとダメかと思ったのですが、Java からさらっと変更することができます。

2-1. 背景色を定義する

まずは XML ファイルに背景色を定義します。

色定義用の XML を新たに作成してもいいですし、既存の styles.xml などに定義を追加しても OK です。

ボクは styles.xml に定義を追加しました。
テーマ関係の変更はこれだけだったので、別ファイルを作成するほどのことじゃないなってことで。

まぁ、この辺りはプロジェクトのポリシーとかあると思いますんで。

今回は背景色を白色にしたかったので、白色の定義を追加しました。
追加後の styles.xml は次のようになります。

<resources>

    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
    -->
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>
    
    <color name="action_bar_background">#ffffff</color> <!-- この行を追加 -->

</resources>

2-2. Java から背景色を変更する

色の定義を追加したら、実際に ActionBar に適用します。

Activity のスーパークラスなんかを用意して共通処理をそこにまとめることも多いかと思います。
今回の色変更もそれと同じようにスーパークラスに実装するといいんじゃないでしょうか。

で、色変更のスニペットは次の通りです。

ActionBar actionbar = getSupportActionBar();

// ActionBar の背景色を変更する
int color = R.color.action_bar_background;
Drawable backgroundDrawable = getApplicationContext().getResources().getDrawable(color);
actionbar.setBackgroundDrawable(backgroundDrawable);
  1. 背景色を取得し、
  2. 背景色を設定した Drawable オブジェクトを作成し、
  3. ActionBar の背景色に設定する

って、流れです。

3. まとめ

同じことは XML だけでもできると思いますが、Java から変更したほうが簡単にできるので Java からやってみました。

見た目に関することは XML でやるのか、Java でやるのかをプロジェクト内で統一しておかないといろいろ面倒なことになりそうです。

4. その他の Android に関する記事

その他の Android に関する記事は次の通りです。
気になる記事があったらぜひチェックしてみてください!

Googleアドセンス用(PC)

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

関連記事

icatch-finished_6609228299_mini

Android アプリで特定の Activity が呼ばれたらアプリを終了させる方法

とある Activity が呼ばれたらアプリを終了させる方法です。 戻るボタンで戻りすぎることが出

記事を読む

icatch-timezone

Android アプリでタイムゾーンを Asia/Tokyo で現在時刻を取得する

もしかしたら環境だったり、条件があるのかもしれないけど備忘録としてメモ。 Android アプ

記事を読む

no image

AlertDialog がキャンセルされたときに処理を行うスニペット

AlertDialog のスニペット。キャンセル時のリスナーを Gist に登録。 new Al

記事を読む

no image

AlertDialog の背景をタップできなくする

AlertDialog はモーダルダイアログではないので背景をタップできてしまう。それだとちょっと不

記事を読む

no image

Android アプリで Google Analytics へトラッキングするサンプルクラス

お客さまからの要望があって対応。特に難しいことはないのだが、せっかくなので Gist にスニペットを

記事を読む

icatch-android_6051805616_mini

Android アプリ開発で “Unable to resolve target ‘android-16′” などとエラーメッセージが表示された場合の対処法

"Unable to resolve target 'android-16'" などとエラーメッセー

記事を読む

no image

位置情報取得に関する覚え書き、その2

以前、【Androidアプリ開発】位置情報取得に関する覚え書き を書いたが、試行錯誤を続ける中で変更

記事を読む

no image

初めてのアンドロイドアプリ開発振り返り

始めてのアンドロイドアプリ開発が落ち着きをみせてきた。まだ熱が冷めないうちに簡単に振り返っておく。

記事を読む

icach-smartphone_10858946293_mini

Android アプリで “external/chromium/net/disk_cache/stat_hub.cc:216″ とエラーメッセージが表示された場合の対処法

Android アプリ開発中にとある画面を表示しようとしたら "external/chromium/

記事を読む

no image

WebView からデフォルトブラウザを開く

WebView に表示されているリンクは WebView ではなくデフォルトブラウザで開きたい、とい

記事を読む

Googleアドセンス用(PC)

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


− 1 = 六

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Googleアドセンス用(PC)

icatch-jersey_multi_pathparams
Jerseyの@PathParamはスラッシュの間に複数指定できる

http://hoge-api/user/{id}.{format}

icatch-vagrant_box_customize
VagrantのBoxファイルをカスタマイズして独自のBoxファイルを作成する

配布されている Vagrant の Box ファイルを使って検証環境を

icatch-2015-006-1
バリデーションチェックにJava8のOptionalを使ってスマートに書く(自分比)

Web アプリのバリデーションチェックにアノテーションを使うことが増え

icatch-2015-005-1
ユニットテストの偏りを防ぐ命名規則の付け方

ユニットテスト名に以下の命名規則を付けるようにして二ヶ月ぐらい経った。

icatch-2015-004-1
Vagrantで起動したCentOS上のOctopressをホストOSから確認する設定

タイトルの通りだが、Vagrant を使って起動した CentOS に

→もっと見る

PAGE TOP ↑