2014-09-08 22 views
6

Ich habe eine kleine Frage über die ActionBar in Android. Ich verwende Xamarin Studio, um eine Anwendung zu erstellen, und ich möchte die Farbe der ActionBar ändern. Ich habe weit und breit nach einer Möglichkeit gesucht, die Farbe zu ändern, aber das ist das einzige, was ich finden könnte.Ändern ActionBar Farbe - Xamarin

ColorDrawable colorDrawable = new ColorDrawable(Color.ParseColor("#ff0f62ae")); 
      this.ActionBar.SetBackgroundDrawable(colorDrawable); 

ich tought dies funktionieren würde, aber jetzt bekomme ich diese Ausnahme, und ich kann für mich nicht herausfinden, warum funktioniert diese nicht.

Dies ist die Ausnahme:

Object reference not set to an instance of an object 

Kann jemand mir erklären, was ich bin doeing falsch und mir vielleicht zeigen, wie ich dieses Problem beheben kann.

bearbeiten

Nach ein paar Kommentaren Ich habe dies versucht:

<resources> 
    <style name="AppTheme" 
      parent="android:style/Theme.Holo.Light"> 
     <item name="android:actionBarStyle">@style/MyActionBar</item> 
    </style> 

    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
     <item name="android:background">@color/</item> 
     <item name="andriod:titleTextStyle">@style/MyActionBarTextAppearance</item> 
    </style> 

    <style name="MyActionBarTextAppearance" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> 
     <item name="android:textColor">@color/default_white</item> 
    </style> 
</resources> 

Wie kann ich eine eigene Farbe hinzufügen und wie ordne ich das meine ActionBar

+0

Ich glaube, Sie einen Stil zu sehen, https://developer.android.com/training/basics/actionbar/styling erstellen .html – PedroAGSantos

+0

Ich dachte das oben wäre möglich, weil jemand es hier versucht: http://stackoverflow.com/questions/11770512/change-actionbar-background-color-in-code-from-navigation-list Jemand sagte, es funktioniert –

+0

Ja, es könnte funktionieren, aber wenn Sie ein Muster haben, das alles sauber macht, denke ich, dass Sie es versuchen können. Wenn es nicht funktioniert, müssen wir sehen, warum? Aber bitte versuchen Sie, Ihren Stil zu erstellen – PedroAGSantos

Antwort

2

Ich habe es so gemacht. Versuchen Sie dies und lassen Sie mich wissen, ob es funktioniert bitte,

<style name="AppTheme" parent="android:Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/ActionBarTheme</item> 
</style> 

<style name="ActionBarTheme" parent="android:Widget.Holo.Light.ActionBar.Solid.Inverse"> 
    <item name="android:background">@color/color_action_bar</item> 
</style> " 

Und in Colors.xml oder fügen Sie Farbe variabel in strings.xml, fügen Sie bitte Ihre gewünschte Farbe für die Aktionsleiste

<color name="color_action_bar">#3450A3</color> 

Und Erwähnung das Thema in der Manifest-Datei

<application 
    android:theme="@style/AppTheme" > 
+0

Vielen Dank für den Awnser, ich werde es versuchen –

+0

Funktioniert es Kumpel? – Sid

+2

Funktioniert nicht ... – Mayank

1
Try this: 


<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
     <item name="android:background">#f00</item> 
     <item name="android:titleTextStyle">@style/MyTextAppearance</item> 
    </style> 

    <style name="MyTextAppearance" parent="android:TextAppearance.Holo.Widget.ActionBar.Title"> 
     <item name="android:textColor">#ffffff</item> 
    </style> 
+3

Wie und wo schließe ich das in meinem Programm –

+0

in styles.XML ein –

+0

Ich muss styles.XML machen und das in den Ressourcenordner legen. oder stelle ich es in einen anderen folde –

0

Dieser arbeitete für mich

<color name="actionBarBackgroundColor">#2C3E50</color> 
    <color name="actionBarTextColor">#FFFFFF</color> 
    <style name="MyAppTheme"/> 
    <style name="MyAppTheme" parent="@android:style/Theme.DeviceDefault.Light"> 
     <item name="android:actionBarStyle">@style/MyTheme.ActionBarStyle</item>   
    </style> 
    <style name="MyTheme.ActionBarStyle" parent="@android:style/Widget.DeviceDefault.Light.ActionBar"> 
     <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item> 
     <item name="android:background">@color/actionBarBackgroundColor</item> 
    </style> 
    <style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title"> 
     <item name="android:textColor">@color/actionBarTextColor</item> 
    </style> 
0

Als Erklärung für die Antwort von @ SID: Um Ihre Aktionsleiste zu formatieren, müssen Sie das gesamte Thema Ihrer App überschreiben.

Wenn sie vorhanden sind Styles.XML und Colors.XML Dateien unter Resource>values Ordner nicht hinzufügen und bearbeiten Sie sie wie folgt:

styles.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<resources> 
    <style name="AppTheme" parent="android:Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/ActionBarTheme</item> 
    </style> 

    <style name="ActionBarTheme" parent="android:Widget.Holo.Light.ActionBar.Solid.Inverse"> 
    <item name="android:background">@color/DarkBlue</item> 
    </style> 
</resources> 

Farben.XML:

<?xml version="1.0" encoding="utf-8" ?> 
<resources> 
    <color name="DarkBlue">#007acc</color> 
</resources> 

Nun zu Properties>AndroidManifest.xml navigieren und die <application> Tag ändern Ihre angepassten Thema zu verweisen:

<application 
    android:theme="@style/AppTheme" 
    ... > 

    </application> 

UPDATE:

Wenn Sie bereit sind, den Sie verwenden AppCompat und ActionBarActivity dann wird nicht mehr benötigt ActionBarTheme in Styles.XML so hier ist was Styles.XML wird wie folgt aussehen:

<?xml version="1.0" encoding="utf-8" ?> 
<resources> 

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/LightBlue</item> 
    <item name="colorPrimaryDark">@color/DarkBlue</item> 
    <item name="colorAccent">@color/Pink</item> 
    </style> 

</resources> 

Und die Colors.XML:

<?xml version="1.0" encoding="utf-8" ?> 
<resources> 

    <color name="DarkBlue">#0052cc</color> 
    <color name="Pink">#ff1ac6</color> 
    <color name="LightBlue">#1a75ff</color> 

</resources>