【问题标题】:Overlaying Action Bar叠加操作栏
【发布时间】:2013-12-07 17:47:55
【问题描述】:

我正在尝试覆盖操作栏。我的目标是 API 级别 8 到 19。来自官方文档:

<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@android:style/Theme.AppCompat">
        <item name="android:windowActionBarOverlay">true</item>

        <!-- Support library compatibility -->
        <item name="windowActionBarOverlay">true</item>
    </style>
</resources>

"另外请注意,这个主题包括两个 windowActionBarOverlay 样式的定义:一个带有 android: 前缀,一个没有。带有 android: 前缀的一个用于在平台中包含该样式的 Android 版本,并且不带前缀的是​​旧版本,从支持库中读取样式。” 当我为支持库添加项目时,Eclipse 报告错误:

android:windowActionBarOverlay requires API level 11 (current min is 8)

我该如何解决这个问题?非常感谢。

【问题讨论】:

  • 使用这个&lt;item name="windowActionBarOverlay"&gt;true&lt;/item&gt; 没有前缀的那个是用于从支持库中读取样式的旧版本。
  • 两者都有效吗?
  • 11以下使用&lt;item name="windowActionBarOverlay"&gt;true&lt;/item&gt;,API 11及以上使用&lt;item name="android:windowActionBarOverlay"&gt;true&lt;/item&gt;
  • 好的,但是我收到了问题中指定的错误。
  • 在相应 res/values 文件夹中的不同 sytles.xml 中使用它

标签: android eclipse android-actionbar android-styles android-actionbar-compat


【解决方案1】:

我也遇到过这个问题,我通过添加 tools:tgetApi="11" 属性来解决它:

<item tools:targetApi="11" name="android:windowActionBarOverlay">true</item>

您还应该将 xmlns 添加到 xml 文件的资源标签中:

<resources xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">

【讨论】:

    【解决方案2】:

    遇到了同样的问题(想知道为什么官方文档中没有提到这一点)。只需使用这个额外的 tools:ignore 语句来抑制警告:

    <item name="android:windowActionBarOverlay" tools:ignore="NewApi">true</item>
    

    为了实现这一点,您还需要命名空间:

    <resources xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
    

    【讨论】: