ページ

2013/05/25

[Android]ActionBarSherlockの背景色をカスタマイズする

カメラアプリを作っているので QuickPic のようにActionBar を透過させて
オーバーレイさせて表示したいなぁと思ったのだけど
意外と ActionBarSherlockの背景色をカスタマイズするのが大変だったのでメモ。

ActionBar の背景色変更方法を適当にググると
以下のようにスタイルを変更する方法が見つかったりする。
Style.xmlを使用してThemeをカスタマイズする | Tech Booster
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="my_theme" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/my_actionbar_style</item>
    </style>
    <style name="my_actionbar_style" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">#000000</item>
    </style>
</resources>
簡単だなぁと思って適用してみる…がっ…駄目っ…!
透過色を指定したら画面の高さいっぱいに ActionBar が表示されるハチャメチャな表示になってしまった。
色々調べて試してダメでというのを繰り返すこと2日くらい…。

神が現れた!
ニクログ: ActionBarSherlockでActionBar対応したメモ
以下のように書けば @color/actionBar の色が適用された ActionBarSherlock が使えます。
<resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
    <style name="ActionBarCustomStyle" parent="@style/Widget.Sherlock.Light.ActionBar.Solid">
        <item name="background">@color/actionBar</item>
        <item name="backgroundSplit">@color/actionBar</item>
        <item name="backgroundStacked">@color/actionBar</item>
        <item name="titleTextStyle">@style/ActionBarCustomTitleStyle</item>
    </style>
    <style name="ActionBarCustomTitleStyle" parent="@style/TextAppearance.Sherlock.Widget.ActionBar.Title">
        <item name="android:textColor">@color/abs__primary_text_holo_dark</item>
        <item name="android:textStyle">bold</item>
    </style>
</resources>
<resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
    <style name="ActionBarCustomStyle" parent="@style/Widget.Sherlock.Light.ActionBar.Solid">
        <item name="android:background">@color/actionBar</item>
        <item name="android:backgroundSplit">@color/actionBar</item>
        <item name="android:backgroundStacked">@color/actionBar</item>
        <item name="android:titleTextStyle">@style/ActionBarCustomTitleStyle</item>
    </style>
    <style name="ActionBarCustomTitleStyle" parent="@style/TextAppearance.Sherlock.Widget.ActionBar.Title">
        <item name="android:textColor">@color/abs__primary_text_holo_dark</item>
        <item name="android:textStyle">bold</item>
    </style>
</resources>
透過色を指定すると一瞬灰色っぽいのがちらつきましたが
Activity のアニメーションを無効化したら出なくなりました。