android:windowActionBarOverlay和android:actionBarStyle需要api级别11以上。

4
我正在制作一个安卓应用程序,并使用android-support-v7-appcompat来确保我的应用程序支持2.2及以上版本的安卓操作栏。 我需要使操作栏悬浮并使用半透明背景,因此我已经将styles.xml修改为以下代码:
    <resources>

    <style name="AppBaseTheme" parent="android:Theme.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>

    <!-- TRANSLUCENT THEME -->
    <style name="TranslucentAB" parent="Theme.AppCompat.Light">
        <item name="windowActionBarOverlay">true</item>
        <item name="android:windowActionBarOverlay">true</item>
        <item name="android:actionBarStyle">@style/BlackBar</item>
        <item name="actionBarStyle">@style/BlackBar</item>
    </style>

    <!-- TRANSLLUCENT COLOR STYLE -->
    <style name="BlackBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">@drawable/halfblack</item>
        <item name="background">@drawable/halfblack</item>
    </style>

</resources>

并修改了清单文件以适应新的操作栏:

android:theme="@style/TranslucentAB"

问题在于以下两行代码需要API 11及以上版本的支持:
<item name="android:windowActionBarOverlay">true</item>
<item name="android:actionBarStyle">@style/BlackBar</item>

但我需要支持API级别8及以上。如果我删除这两行,该应用程序就可以在Android 2.2上正常运行,并带有黑色半透明操作栏。但如果我在Android 4.3中运行该应用程序,则会带有纯白色的操作栏。halfblack只是一个70%黑色的png文件,存储在drawable文件夹中。

2个回答

7

我找到了解决方案:

我需要在res/values-v11中创建单独的styles.xml,以支持安卓3.0及以上版本的相同功能。


5
为了使用支持库的操作栏叠加效果,请按照以下步骤进行:
    <!-- Support library compatibility -->
    <item name="windowActionBarOverlay">true</item>

注意样式名称不包含android:前缀。

谢谢回复,Greg。但这就是问题所在。如果我按照你说的做,那么覆盖层只能在Android 2.2中工作,而不能在4.3中工作,这就是为什么我必须使用android:windowsActionBarOverlay。我必须手动删除由此引起的lint错误,然后运行应用程序以支持Android 3.0及以上版本中的覆盖层。有没有办法在XML中抑制API错误? - Rakesh
你的主题是从Theme.AppCompat派生的吗?(应该是这样的)。而且你只应该使用windowActionBarOverlay,不要加上android:前缀。你是正确的,另一个会导致API错误,这是设计上的问题。 - Greg Ennis
1
找到了解决问题的方法:我需要在res/values-v11中创建单独的styles.xml来支持Android 3.0及以上版本中相同的功能。 - Rakesh
works for me<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="windowActionBarOverlay">true</item> </style> - frostymarvelous

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接