如何使用Holo.Light主题,但ActionBar使用没有ICS的Hulu?

时间:2012-01-09 17:27:38

标签: android themes android-3.0-honeycomb android-actionbar

我想要一个黑暗的ActionBar,但让应用程序的其余部分使用Holo.Light主题。我知道在ICS / 4.0中有一个Theme.Holo.Light.DarkActionBar主题,但我希望这也适用于Honeycomb / 3.0 +。

在片刻我正在使用黑暗的Holo主题,而对于我的其他组件,我正在使用ContextThemeWrapper。但这是很多工作,很容易导致错误。

这可能吗?

3 个答案:

答案 0 :(得分:24)

创建自定义样式并将父样式设置为holo light主题,但将ActionBar设置为普通Holo。

这样的xml文件可以完成这项工作(仅仅是我的记忆):

<style name="appstyle0" parent="android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@android:style/Widget.Holo.ActionBar</item>
</style>

然后将AndroidManifest.xml中的appstyle0设置为样式,并在所有Activity中设置holo light主题,但操作栏样式为全黑。

修改 我检查了为什么我的第一个答案不起作用。

<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”作为父级。 然后你必须将不同的项目逐个设置为黑暗主题。 让我们以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中搜索参数。 很抱歉告诉我,但根据我所看到的情况,我想没有简单的方法......

答案 1 :(得分:5)

当我想在操作栏中放置自定义视图时遇到了类似的问题。我想要一个黑暗的动作栏,而应用程序的其余部分仍然很轻。更具体地说,我在动作栏中有旋转器。

首先你的主题应该扩展

<style name="MyTheme.Light" parent="android:Theme.Holo.Light.DarkActionBar">

接下来,在您的活动中,使用getActionBar().getThemedContext()作为夸大观看次数的上下文。在我的例子中,它是我传递给我的微调器阵列适配器的东西。

完美地为我工作。

答案 2 :(得分:0)

发现它很容易...... 100%有效

将以下行添加到 Assemblyinfo.cs

[assembly: Application(Theme = "@android:style/Theme.Material.Light.DarkActionBar")]