web-dev-qa-db-ja.com

ActionBarSherlockの背景色を変更する

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

サイトによると( 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>

ビルトインテーマが背景に画像を使用していることに気づきましたが、背景色を変更するために画像を作成する必要がないことを祈っています。

ありがとう。

37
Kris B

アクションバーの背景色は、テーマ自体ではなく、アクションバーのスタイルで定義されます。次のようなことをする必要があります。

<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は、Honeycomb以前のビューの境界を尊重していなかったため、スタックタブビューの個別の背景でタブナビゲーションを使用すると、問題が発生します。

77
Jake Wharton

私はちょうど使用しました

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

背景色を変更しました。それが役に立てば幸い。

54
alicanbatur

Jake Whartonが言及したコードは真実です。ただし、minSDK <11を使用している場合、styles.xmlにコードを適用すると、Android:actionBarStyleがAPI-11 +でサポートされるため、機能しない場合があります

そのエラーを解決するには:

Resフォルダーにvalues-v11のフォルダーを作成し、上記のようにXMLファイルを作成します。

2
aagam94