55

平台:4.3

API 级别:18

AndroidManifest.xml:

<uses-sdk
    android:minSdkVersion="18"
    android:targetSdkVersion="18" />

值-v14\styles.xml:

  <resources>

<!--
    Base application theme for API 14+. This theme completely replaces
    AppBaseTheme from BOTH res/values/styles.xml and
    res/values-v11/styles.xml on API 14+ devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
</style>

 <style name="CustomActionBarTheme"
       parent="@style/Theme.Holo.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar"
       parent="@style/Widget.Holo.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@drawable/actionbar_background</item>
</style>

我是一个android新手。非常感谢!

4

7 回答 7

88

做这个:

"android:style/Theme.Holo.Light.DarkActionBar"

android您在样式之前错过了关键字。这表示它是 Android 的内置样式。

于 2013-08-22T02:42:42.347 回答
14

确保您已在项目属性(而非清单)中将目标 API(不同于目标 SDK)设置为至少 4.0/API 14。

于 2013-12-30T09:49:45.093 回答
9

@android 对我不起作用。当我使用android(没有@)时,它就像一个魅力。

例子:

<style name="CustomActionBarTheme"
       parent="android:style/Theme.Holo.Light.DarkActionBar">
于 2014-01-26T09:38:45.207 回答
3

此处为新手准备的教程中有一个重大错误:http: //developer.android.com/training/basics/actionbar/styling.html

这很重要,因为对于新手来说几乎不可能检测到错误的原因。

错误在于本教程明确声明本教程适用于 api 级别 11(Android 3.0),而实际上这仅适用于主题 Theme.Holo(没有进一步的扩展和变体)

但本教程使用主题 Theme.holo.Light.DarkActionBar 仅是 api 级别 14 (Android 4.0) 及更高版本的有效主题。

这只是这些教程中发现的许多错误示例之一(在其他方面都很棒)。这个周末应该有人纠正这些错误,因为它们确实是代价高昂且令人讨厌的时间窃贼。如果有办法可以将此信息发送给 Android 团队,请告诉我,我会做的。但是,希望他们阅读 Stackoverflow。(让我建议:Android 团队应该考虑让新手尝试所有教程,以证明它们是有效的)。

我(和无数其他人)发现的另一个错误是,如果您严格遵循教程,appcombat 向后合规模块确实无法正常工作。错误未知。我不得不放弃。

关于这个线程中的错误,这里引用了教程文本中的不匹配斜体:

"仅适用于Android 3.0及更高版本

当仅支持Android 3.0及更高版本时,您可以像这样定义操作栏的背景:

    <resources>
        <!-- the theme applied to the application or activity -->
        <style name="CustomActionBarTheme"
        parent="@style/Theme.Holo.Light.DarkActionBar"> 

ERROR1:只有 Theme.Holo 可用于 Android 3.0。因此,删除“Light.DarkActionBar 等。

ERROR2: @style/Theme.Holo"> 不起作用。必须写 @android:style/Theme.Holo"> 以表明它是被引用的内置主题。(有点奇怪,“内置”不是默认的,但需要说明?)

错误更正的编译器建议是将 api 级别 14 定义为最小 sdk。这不是最优的,因为它会导致不符合 Andreoid 3.0(api 级别 11)。因此,我只使用 Theme.Holo,这似乎工作正常(不过,这是一个新发现)。

我正在使用支持 Android 的 Netbeans。效果很好。

于 2014-02-28T14:18:05.480 回答
1

如果您使用 android studio,这可能对您有用。

我有一个类似的问题,我通过将 skd 路径从默认的 C:\Program Files (x86)\Android\android-studio\sdk 更改为 C:\Program Files (x86)\Android\android-sdk 来解决它。

似乎问题来自不支持此主题的编译器版本(gradle 自动将其设置为 sdk 文件夹中可用的最高版本),并且由于 android studio 在其 sdk 文件夹中只有 api 7,它给了我这个错误。

有关如何在 Android Studio 中更改 Android sdk 路径的更多信息:Android Studio - 如何更改 Android SDK 路径

于 2014-07-04T10:43:52.710 回答
0

此外,如果您尝试使用 CustomActionBarTheme,请确保有

<application android:theme="@style/CustomActionBarTheme" ... />

在 AndroidManifest.xml 中

不是

<application android:theme="@android:style/CustomActionBarTheme" ... />
于 2014-11-22T15:02:11.830 回答
0

您可以更改这一父属性 =“android:style/Theme.Holo.Light.DarkActionBar”

于 2015-11-26T07:49:09.913 回答