【问题标题】:Remove shadow below ActionBar without Sherlock在没有 Sherlock 的情况下移除 ActionBar 下方的阴影
【发布时间】:2015-03-31 03:42:49
【问题描述】:
我使用 AppCompat 来实现兼容性而不是 Sherlock。有什么办法可以去掉ActionBar下方的阴影?我已经搜索了很多答案,并且都依赖于 Sherlock,这意味着,
<item name="android:windowContentOverlay">@null</item>
根本不适用于 AppCompat。
有什么建议吗?
【问题讨论】:
标签:
java
android
android-actionbar
android-support-library
android-appcompat
【解决方案1】:
据我所知,如果设备的系统版本高于14,Sherlock 使用默认的ActionBar。
如果您使用此tool 为您的操作栏生成主题,您的操作栏将拥有9patch 的背景图像。如果你仔细观察它们,你会在底部看到不同的颜色,这会导致这种阴影外观。只需使用照片工具将其删除,您就会为您的ActionBar 获得一个无阴影主题。
【解决方案2】:
我在 appcompat-v7 资源库 /res/style_base.xml 中找到了这个:
<style name="Widget.AppCompat.Base.ActionBar.Solid" parent="Widget.AppCompat.Base.ActionBar">
<item name="background">@drawable/abc_ab_solid_dark_holo</item>
<item name="backgroundStacked">@drawable/abc_ab_stacked_solid_dark_holo</item>
<item name="backgroundSplit">@drawable/abc_ab_bottom_solid_dark_holo</item>
</style>
<style name="Widget.AppCompat.Light.Base.ActionBar.Solid"
parent="Widget.AppCompat.Light.Base.ActionBar">
<item name="background">@drawable/abc_ab_solid_light_holo</item>
<item name="backgroundStacked">@drawable/abc_ab_stacked_solid_light_holo</item>
<item name="backgroundSplit">@drawable/abc_ab_bottom_solid_light_holo</item>
</style>
我也找到了这个答案:
AppCompat Actionbar styling
因此,IMO,您要做的是重新设置 ActionBar 主题的样式(如答案所示)并为其提供自己的不带阴影的可绘制对象。
编辑:我发现这个答案更接近你的问题:
Strange divider with the v7 support actionbar
很抱歉,我无法对这些属性在效果中的作用进行更多研究。
【解决方案3】:
这适用于 AppCompat:
<style name="MyAppTheme" parent="Theme.AppCompat.Light">
<item name="actionBarStyle">@style/MyActionBarTheme</item>
</style>
<style name="MyActionBarTheme" parent="Base.Widget.AppCompat.Light.ActionBar.Solid">
<item name="elevation">0dp</item>
</style>