我正在使用Theme.AppCompat
为我的应用程序获得黑暗的外观。一切看起来都不错,除了使用这个主题的动作栏看起来很古老,即它有一个明亮的蓝色底部分隔符。
我希望操作栏看起来像Theme.AppCompat.Light.DarkActionBar
。
看themes.xml,我发现:
<style name="Theme.AppCompat.Light.DarkActionBar"
parent="Theme.Base.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">true</item>
</style>
<style name="Theme.Base.AppCompat.Light.DarkActionBar" parent="Theme.Base.AppCompat.Light">
<item name="actionBarDivider">@drawable/appcompat_divider_dark</item>
</style>
所以我创建自己的风格如下:
<style name="myTheme" parent="@style/Theme.AppCompat">
<item name="actionBarDivider">@drawable/appcompat_divider_dark</item>
</style>
但是我得到了构建错误:
No resource found that matches the given name (at 'actionBarDivider' with value
'@drawable/appcompat_divider_dark')
为什么我不能使用框架使用的相同drawable?
答案 0 :(得分:1)
蓝线是用于操作栏的背景图像的一部分。例如,您可以在sdk/platforms/android-19/data/res/drawable-xxhdpi/ab_transparent_dark_holo.9.png
诀窍是通过继承Widget.AppCompat.ActionBar
来创建自己的Widget样式,并使用您想要的png设置background属性,该png没有蓝线。我使用支持库的现有@drawable/abc_ab_bottom_transparent_dark_holo
。您可以在sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/
文件夹中找到它。
因此,请在styles.xml文件中创建以下元素。
<style name="myActionBar" parent="@style/Widget.AppCompat.ActionBar">
<item name="android:background">@drawable/abc_ab_bottom_transparent_dark_holo</item>
</style>
然后在主题中包含这个新创建的样式(已经存在于styles.xml文件中):
<style name="AppBaseTheme" parent="@style/Theme.AppCompat">
<item name="android:actionBarStyle">@style/myActionBar</item>
</style>
要在较旧的API中启用此更改,请在所有3个文件夹中进行相同的更改 - values-v14
,values-v12
和values
。
需要注意的一件重要事情是,“android:”命名空间不应用于values-v12
和values
文件夹中的名称属性。