Deb*_*tra 14 android android-theme actionbarsherlock
我包括我的样式的xml布局:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.Styled" parent="Theme.Sherlock">
<item name="actionBarStyle">@style/Widget.MyApp.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.MyApp.ActionBar</item>
</style>
<style name="Widget.MyApp.ActionBar" parent="Widget.Sherlock.Light.ActionBar">
<item name="titleTextStyle">@style/Widget.MyApp.TitleTextStyle</item>
<item name="background">@color/red</item>
<item name="android:background">@color/red</item>
<item name="windowContentOverlay">@null</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<style name="Widget.MyApp.TitleTextStyle" parent="TextAppearance.Sherlock.Widget.ActionBar.Title">
<item name="android:textColor">@color/white</item>
<item name="android:textSize">21sp</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
一些关于互联网的搜索建议使用windowContentOverlay设置为@null.但是当我在xml风格中使用它时,它不会改变任何东西.任何人都可以帮忙做什么?
Tom*_*mik 30
如果要在ActionBar下创建阴影,则必须android:windowContentOverlay在应用程序主题上设置参数(在代码中,您在ActionBar样式上错误地设置了它).
在您的示例中,它将是:
<style name="Theme.Styled" parent="Theme.Sherlock">
...
<item name="android:windowContentOverlay">@drawable/my_actionbar_shadow</item>
</style>
Run Code Online (Sandbox Code Playgroud)
使用@null值可删除阴影.
这一行在Android 3.0及更新版本的ActionBar上设置了阴影.但是,如果您使用的是ActionBarSherlock,它将无法正常工作.它将在运行早于Android 4.0的系统的Android设备上的ActionBarSherlock上创建窗口顶部的阴影(尽管自Android 3.0以来ActionBar存在于api中,ActionBarSherlock使用早于Android 4.0的所有Android版本的自定义实现).
要在ActionBarSherlock下面创建阴影,您必须windowContentOverlay在应用程序主题上设置参数(注意缺少的android:).
<style name="Theme.Styled" parent="Theme.Sherlock">
...
<item name="windowContentOverlay">@drawable/my_actionbar_shadow</item>
</style>
Run Code Online (Sandbox Code Playgroud)
再次,使用@null删除阴影.
尽管此行适用于ActionBarSherlock,但它不适用于运行Android 4.0及更高版本的Android设备,在此类设备上ActionBar下不会创建阴影.那么如何组合这两个参数来获得ActionBar和ActionBarSherlock下的所需阴影?
在您的案例中使用资源配置限定符使用平台版本限定符.在res/values/styles.xml使用第二个xml代码.并在res/values-v14/styles.xml使用第一个xml代码.因此,默认情况下使用ActionBarSherlock版本(对于Android 4.0之前的版本),ActionBar版本用于Android 4.0及更高版本.
编辑: Android 4.3(API级别18)中
存在错误,android:windowContentOverlay无效.它应该在将来的版本中修复.如果您需要在Android 4.3中修复它,您可以找到错误报告中链接的变通方法.
正如之前的回答确实说在应用程序主题中使用"windowContentOverlay"而不是操作栏样式.
<style name="Theme.Styled" parent="Theme.Sherlock">
...
<item name="windowContentOverlay">@drawable/my_actionbar_shadow</item>
</style>
Run Code Online (Sandbox Code Playgroud)
如果你想要一个逼真的阴影你可以在"你的Android文件夹"/ platforms/android-16/data/res/drawable-hdpi /中找到一个
ab_solid_shadow_holo.9.png并将其复制到drawable-hdpi文件夹,最后的结果是
<style name="Theme.Styled" parent="Theme.Sherlock">
...
<item name="windowContentOverlay">@drawable/ab_solid_shadow_holo</item>
</style>
Run Code Online (Sandbox Code Playgroud)