黑暗的行动酒吧与Theme.AppCompat

我正在使用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> 

所以我创build自己的风格如下:

 <style name="myTheme" parent="@style/Theme.AppCompat"> <item name="actionBarDivider">@drawable/appcompat_divider_dark</item> </style> 

但是我得到了构build错误:

 No resource found that matches the given name (at 'actionBarDivider' with value '@drawable/appcompat_divider_dark') 

为什么我不能使用框架使用的相同的drawable?

Solutions Collecting From Web of "黑暗的行动酒吧与Theme.AppCompat"

蓝线是用于操作栏的背景图像的一部分。 例如,您可以在以下位置find它: sdk/platforms/android-19/data/res/drawable-xxhdpi/ab_transparent_dark_holo.9.png

诀窍是通过inheritanceWidget.AppCompat.ActionBar来创build自己的Widget风格,并将背景属性设置为所需的png,而不是蓝线。 我使用支持库的现有的@drawable/abc_ab_bottom_transparent_dark_holo 。 你可以在sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/文件夹中find它。

所以在styles.xml文件中创build下面的元素。

 <style name="myActionBar" parent="@style/Widget.AppCompat.ActionBar"> <item name="android:background">@drawable/abc_ab_bottom_transparent_dark_holo</item> </style> 

然后在你的主题中包含这个新创build的样式(已经存在于styles.xml文件中):

 <style name="AppBaseTheme" parent="@style/Theme.AppCompat"> <item name="android:actionBarStyle">@style/myActionBar</item> </style> 

要在旧API中启用此更改,请在所有3个文件夹中进行相同的更改 – values-v14values-v12values 。 需要注意的一点是,“android:”命名空间不应该用于values-v12values文件夹中的名称属性。