2014-07-11 15 views
8

Ich benutze Theme.AppCompat für meine App, um das dunkle Aussehen zu bekommen. Alles sieht gut aus, außer dass die Aktionsleiste, die dieses Thema verwendet, alt aussieht, d. H. Sie hat einen hellblauen Bodenteiler.dunkle Aktionsleiste mit Theme.AppCompat

Ich möchte, dass die Aktionsleiste aussieht wie in Theme.AppCompat.Light.DarkActionBar.

bei themes.xml Sehen, ich finde:

<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> 

So mache ich meinen eigenen Stil, wie unten:

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

aber ich habe den Fehler zu bauen:

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

Warum kann verwende ich nicht das gleiche Zeichenfeld, das vom Framework verwendet wird?

+0

Haben Sie ''? –

+0

@ FrankN.Stein ja ich habe. Es machte keinen Unterschied. Eclipse zeigt mir, dass der Fehler in der Referenz der ziehbaren Ressource liegt, nicht im Attributnamen, mit oder ohne 'android:'. – faizal

+0

'@ drawable/appcompat_divider_dark' bedeutet, dass Sie eine Ressource mit dem Namen' appcompat_divider_dark.png' (oder .9.png oder .jpg) in einem Ihrer '/ res/drawable'-Ordner haben. Ist es so? –

Antwort

1

Die blaue Linie ist Teil des Hintergrundbilds, das für die Aktionsleiste verwendet wird. Zum Beispiel können Sie es in finden: sdk/platforms/android-19/data/res/drawable-xxhdpi/ab_transparent_dark_holo.9.png

Der Trick besteht darin, erstellen Sie Ihren eigenen Widget-Stil durch Erben Widget.AppCompat.ActionBar und legen Sie das Hintergrundattribut mit Ihrem gewünschten PNG, die nicht die blaue Linie hat. Ich benutze die vorhandene Support-Bibliothek @drawable/abc_ab_bottom_transparent_dark_holo. Sie finden es im Ordner sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/.

So erstellen Sie das untere Element in der Datei styles.xml.

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

Dann sind diese neu in Ihrem Thema erstellt Stil (bereits in der styles.xml-Datei):

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

Um diese Änderung in älteren APIs zu ermöglichen, machen die gleichen Änderungen in allen drei Ordner - values-v14, values-v12 und values. Eine wichtige Sache zu beachten ist, dass der Namespace "android:" nicht für die Namensattribute in den Ordnern values-v12 und values verwendet werden sollte.

Verwandte Themen