2012-04-08 4 views
37

私はActionBarSherlockを実装しようとしていますが、これは実装とカスタマイズが比較的簡単だと言われています。私は実装がかなり簡単だったが、ActionBarの背景色を変更しようとしており、難しいことが分かっている。ActionBarSherlockの背景色を変更します。

サイト(link)によると、ActionBarSherlockのテーマの1つを継承し、必要なプロパティを上書きすることができます。

これは私がこれまでにしたものである:

<?xml version="1.0" encoding="UTF-8"?> 
<resources> 
    <style name="Theme.ActionBar" parent="Theme.Sherlock.ForceOverflow"> 
     <item name="android:background">#000000</item> 
     <item name="background">#000000</item> 
    </style> 
</resources> 

私は組み込みのテーマに気付いてるが、背景用の画像を使用しているが、私は私が変更にイメージを作成する必要はありません祈りますよ背景色。

ありがとうございました。

答えて

77

アクションバーの背景色は、テーマ自体ではなく、アクションバーのスタイルで定義されます。

<style name="Theme.MyTheme" parent="Theme.Sherlock.ForceOverflow"> 
    <item name="actionBarStyle">@style/Widget.MyTheme.ActionBar</item> 
    <item name="android:actionBarStyle">@style/Widget.MyTheme.ActionBar</item> 
</style> 

<style name="Widget.MyTheme.ActionBar" parent="Widget.Sherlock.ActionBar"> 
    <item name="android:background">#ff000000</item> 
    <item name="background">#ff000000</item> 
</style> 

XMLで定義されている色を使用するように注意してください。 ColorDrawableはハニカム前のビュー境界を尊重していないので、スタックタブビューの別の背景にタブナビゲーションを使用すると問題が発生します。

+0

お返事ありがとうございます。私はタブや何かを使用していない、いくつかのアクションを持つただ1つのActionBarだから、イメージの代わりに色を使うのはいいですか?私は8種類のアプリでActionBarSherlockを使用していますが、画像を作成する専門知識はありません。 –

+0

ところで、あなたのコードは、背景色を追加するために働いた。ありがとう。 –

+0

積み重ねた背景属性に使用していない限り、色を使用することは安全です。通常の背景と分割された背景はうまくいくでしょうが、スタックされた色を使用する3.0より前では正しく表示されません。 –

54

私はちょうどそれは、背景色を変更

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00853c"))); 

を使用。それが役に立てば幸い。

+4

short&sweet ... –

+2

@alicanbaturですが、ActionBarに独自のスタイルを設定してアプリ全体に使用する予定がある場合は、バックグラウンドを変更したいすべてのクラスにコードの行を貼り付けると非常にうれしくありません:) – noloman

+0

多くの努力を保存してくれてありがとう。 –

2

Jake Whartonに記載されているコードはtrueです。 actionBarStyleは、そのエラーを解決するためにAPI-11 +

でサポートされています:

値-V11のフォルダを作成し、あなたがminSDK < 11を持っている場合、Androidはので、しかし、のstyles.xmlにコードを適用するときには動作しない場合があります上記のようにXMLファイルを作成してください。

+1

それは> 11の問題を解決するだけです。 –

関連する問題