删除操作栏阴影

Remove action bar shadow

我想去掉 appcompat 操作栏下方出现的阴影,使操作栏的背景完全透明。

这是我的主题和操作栏样式:

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="android:actionBarStyle">@style/TransparentActionBar</item>
    <item name="android:windowActionBarOverlay">true</item>

    <!-- Support library compatibility -->
    <item name="actionBarStyle">@style/TransparentActionBar</item>
    <item name="windowActionBarOverlay">true</item>

</style>

<!-- Transparent Action Bar Style -->
<style name="TransparentActionBar"
    parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@android:color/transparent</item>

    <!-- Support library compatibility -->
    <item name="background">@android:color/transparent</item>
    <item name="elevation">0dp</item>
</style>

我的最低API等级是16

我为此尝试了几种解决方案,包括:

我一直试图让它在 4.4.4 上运行,但无济于事。 API 21级以下就不行了吗?

编辑:

事实证明,windowContentOverlay 仅适用于 android 前缀:

<item name="android:windowContentOverlay">@null<item/>

尝试在没有前缀的情况下定义它会导致找不到资源错误(无论出于何种原因,此错误都指向带有前缀的资源)。老实说,我不明白为什么会这样。我只能假设 appcompat 不支持 windowContentOverlay 属性。

将 windowContentOverlay 设置为将在操作栏下方绘制的可绘制对象。如果您不想要阴影,请将其设置为空,如下所示:

<item name="android:windowContentOverlay">@null</item>

<item name="windowContentOverlay">@null</item>

这适用于 API 16 级及以上。