【问题标题】:No resource found that matches the given name '@style/ Theme.Holo.Light.DarkActionBar'找不到与给定名称“@style/ Theme.Holo.Light.DarkActionBar”匹配的资源
【发布时间】:2015-11-26 15:49:09
【问题描述】:

平台:4.3

API 级别:18

AndroidManifest.xml:

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

values-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:style/Theme.Holo.Light.DarkActionBar”和“@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse”

标签: android


【解决方案1】:

这样做:

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

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

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    例子:

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

    【讨论】:

      【解决方案4】:

      这里给新手的教程有个大错误: 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。效果很好。

      【讨论】:

      • 这很有趣。 Theme.AppCompat 的变体怎么样。它们是否也只能用于 API 14 及更高版本?例如,Theme.Appcompat.Light.ActionBar 会在 API 8 上工作吗?
      • 我又一次陷入了困境,这一次我从 Theme.Holo 反转为 Theme.AppCompat,因为这是推荐用于 ChromeCast 实现的。然后忘记了我添加了“@Android:style\..”我没有恢复到“@style\...”并且被困了几个小时。请参阅下面的评论。
      【解决方案5】:

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

      我遇到了类似的问题,我通过将 skd 路径从默认的 C:\Program Files (x86)\Android\android-studio\sdk 更改为 C:\Program Files (x86)\Android\android- 解决了这个问题开发工具包。

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

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

      【讨论】:

        【解决方案6】:

        另外,如果你尝试使用CustomActionBarTheme,请确保有

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

        在 AndroidManifest.xml 中

        不是

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

        【讨论】:

          【解决方案7】:

          你可以改变这个 父属性="android:style/Theme.Holo.Light.DarkActionBar"

          【讨论】:

            猜你喜欢
            • 2015-02-10
            • 2014-01-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多