【问题标题】:Theming AppCompat ActionBar主题化 AppCompat ActionBar
【发布时间】:2013-10-03 20:29:54
【问题描述】:

我正在尝试通过使用 AppCompat 库来支持低至 API 级别 9 的设备。我正在尝试使用来自 Google 的 example theme 为 ActionBar 设置主题,但它一直告诉我任何名为 android:action* requires API level 11 (current min is 9) 的项目。我的目标是 18。如果我直接使用示例中的内容,为什么会损坏?谁能帮我弄清楚如何使用 API 级别 9 的 AppCompat 库为 ActionBar 设置主题?

【问题讨论】:

  • 到底是什么破坏了?您的目标是什么并不重要,重要的是您的最低 API 级别。
  • 我希望能够在低于 11 的 API 级别上设置 Actionbar 的主题。示例说它应该适用于 2.1 (API 7) 及更高版本。

标签: android android-theme android-appcompat


【解决方案1】:

android:action* 项目仅适用于 API 11 及更高版本。为了支持不同的 API 级别,Android 包含各种values 目录。如果您查看项目的文件夹结构,您很可能会看到 res/valuesres/values-11 的目录,也许还有其他一些目录。正如您可能已经猜到的那样,11 代表 API 11,这意味着此处应包含仅在 API 11 及更高版本中可用的主题。 values 目录是您的基础目录。

因此,对于您的示例,您需要将主题文件拆分为两个不同的文件。包含android:action* 的部分应位于values-11 文件夹中的主题文件中,其他部分可以保留在基本values 文件夹中。 Android 会自动选择合适的主题。

你真的应该阅读this,尤其是靠近底部的关于应用主题的部分。它讨论了如何将主题应用于不同的 API 级别。

【讨论】:

    【解决方案2】:

    您尝试使用的功能仅从 API 11 开始可用。 您将无法在 API 级别 9 的设备中使用。

    需要 API 级别 11(当前最低为 9)

    您可以在搭载 Android 3.0 及更高版本的设备上运行该示例,但为此您必须将您的 Manifest 文件 minSdkVersion 至少更改为 11。

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

    【讨论】:

    • 我理解错误的含义。我在问如何在不增加 minSdkVersion 的情况下绕过它。
    【解决方案3】:

    尝试删除所有带有android:action* 的项目,只留下带有action* 的项目(没有android 命名空间)。

    这对我有用,但我的风格是从这个用于操作栏的精彩样式生成器中获得的:http://jgilfelt.github.io/android-actionbarstylegenerator/

    【讨论】:

      猜你喜欢
      • 2014-12-18
      • 2015-01-08
      • 2015-08-04
      • 2015-02-07
      • 1970-01-01
      • 2014-02-22
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多