2014-07-11 96 views
8

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

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

<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

你试过''? –

+0

@ FrankN.Stein是的,我有。它没有任何区别。 Eclipse向我展示的错误是在可绘制的资源引用中,而不是在属性名称中,有或没有'android:'。 – faizal

+0

'@ drawable/appcompat_divider_dark'表示您在'/ res/drawable'文件夹中有一个名为'appcompat_divider_dark.png'(或.9.png或.jpg)的资源。是这样吗? –

回答

1

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

诀窍是通过继承Widget.AppCompat.ActionBar来创建您自己的Widget风格,并将背景属性设置为您所需的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-v12values。 需要注意的一点是,“android:”名称空间不应用于values-v12values文件夹中的名称属性。