删除操作栏阴影
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
我为此尝试了几种解决方案,包括:
- 将高度设置为 0dp 仅适用于 Lollipop 设备。
- 如果我尝试使用 windowContentOverlay
,我会收到 "resource not found" 错误
- 将根视图的背景设置为白色或透明等颜色无效
我一直试图让它在 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 级及以上。
我想去掉 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
我为此尝试了几种解决方案,包括:
- 将高度设置为 0dp 仅适用于 Lollipop 设备。
- 如果我尝试使用 windowContentOverlay ,我会收到 "resource not found" 错误
- 将根视图的背景设置为白色或透明等颜色无效
我一直试图让它在 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 级及以上。