暗いActionBarが必要ですが、アプリケーションの残りの部分でHolo.Lightテーマを使用します。私はICS/4.0にTheme.Holo.Light.DarkActionBarテーマがあることを知っていますが、Honeycomb/3.0 +でもこれを機能させたいです。
現時点では、暗いHoloテーマを使用しており、残りのコンポーネントではContextThemeWrapperを使用しています。しかし、これは多くの作業であり、簡単にエラーにつながる可能性があります。
これは可能ですか?
カスタムスタイルを作成し、親スタイルをホロライトテーマに、アクションバーを通常のホロに設定します。
このようなものを含むxmlファイルは、(私の記憶の外で)仕事をするはずです:
<style name="appstyle0" parent="Android:style/Theme.Holo.Light">
<item name="Android:actionBarStyle">@Android:style/Widget.Holo.ActionBar</item>
</style>
次に、AndroidManifest.xmlでappstyle0をスタイルとして設定します。すべてのアクティビティでホロライトテーマですが、アクションバーのスタイルはホロダークです。
編集:最初の回答が機能しない理由を確認しました。
<style name="Widget.Holo.Light.ActionBar" parent="Widget.Holo.ActionBar">
<item name="Android:titleTextStyle">@Android:style/TextAppearance.Holo.Widget.ActionBar.Title</item>
<item name="Android:subtitleTextStyle">@Android:style/TextAppearance.Holo.Widget.ActionBar.Subtitle</item>
<item name="Android:background">@Android:drawable/ab_transparent_light_holo</item>
<item name="Android:backgroundStacked">@Android:drawable/ab_stacked_transparent_light_holo</item>
<item name="Android:backgroundSplit">@Android:drawable/ab_bottom_transparent_light_holo</item>
<item name="Android:homeAsUpIndicator">@Android:drawable/ic_ab_back_holo_light</item>
<item name="Android:progressBarStyle">@Android:style/Widget.Holo.Light.ProgressBar.Horizontal</item>
<item name="Android:indeterminateProgressStyle">@Android:style/Widget.Holo.Light.ProgressBar</item>
</style>
アクションバーは、メインテーマによって一般的に設定される属性を持つstyles.xmlで定義されます。まず最初に、BGは透明なので、親として「Widget.Holo.Light.ActionBar.Solid」を使用する必要があります。次に、さまざまなアイテムを1つずつダークテーマに設定する必要があります。例としてtitleTextStyleを取り上げましょう:
<style name="TextAppearance.Holo.Widget.ActionBar.Title.Own"
parent="TextAppearance.Holo.Widget.ActionBar.Title">
<item name="Android:textColor">@Android:color/primary_text_holo_dark</item>
<item name="Android:textColorHighlight">@Android:color/highlighted_text_holo_dark</item>
<item name="Android:textColorHint">@Android:color/hint_foreground_holo_dark</item>
<item name="Android:textColorLink">@Android:color/holo_blue_light</item>
</style>
これを今に設定します。
<item name="Android:titleTextStyle">@Android:style/TextAppearance.Holo.Widget.ActionBar.Title.Own</item>
上記のxml属性を使用して、このように進めます。
すべての関連属性を見つけるには、styles.xmlおよびthemes.xmlでパラメーターを検索します。申し訳ありませんが、私が見るものによれば、簡単な方法はないと思います...
アクションバーにカスタムビューを配置したいときに、同様の問題に遭遇しました。アプリの残りの部分は明るいままで、暗いアクションバーが欲しかった。より具体的には、アクションバーにスピナーがありました。
まず、テーマを拡張する必要があります
_<style name="MyTheme.Light" parent="Android:Theme.Holo.Light.DarkActionBar">
_
次に、アクティビティから、ビューを拡張するためのコンテキストとしてgetActionBar().getThemedContext()
を使用します。私のインスタンスでは、これが私のスピナーアレイアダプターに渡したものです。
私には完璧に働きました。
簡単だとわかった... 100%機能する
以下の行をAssemblyinfo.csに追加します
[Assembly: Application(Theme = "@Android:style/Theme.Material.Light.DarkActionBar")]