2014-09-08 39 views
6

Ho una piccola domanda sullo ActionBar in Android. Sto usando Xamarin Studio per creare un'applicazione e vorrei cambiare il colore di ActionBar. Ho cercato in lungo e in largo un modo per cambiare il colore, ma questa è l'unica cosa che ho potuto trovare.Cambia azione Colore barra - Xamarin

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

Io ho pensato che avrebbe funzionato, ma ora ho questa eccezione e non riesco a capire perché questo non è lavoro per me.

questa è l'eccezione:

Object reference not set to an instance of an object 

Qualcuno può spiegare a me quello che sono doeing sbagliato e forse mi mostri come posso risolvere questo problema.

Modifica

Dopo un paio di commenti che ho provato questo:

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

Come posso aggiungere un colore personalizzato, e come faccio a trasferire il presente al mio ActionBar

+0

penso che si può creare uno stile dare un'occhiata a https://developer.android.com/training/basics/actionbar/styling .html – PedroAGSantos

+0

Ho pensato che quanto sopra sarebbe possibile perché qualcuno l'ha provato qui: http://stackoverflow.com/questions/11770512/change-actionbar-background-color-in-code-from-navigation-list Qualcuno ha detto che funziona –

+0

Sì, potrebbe funzionare, ma se si dispone di un modello che rende tutto pulito, penso che si possa provare. Se non funziona, dobbiamo vedere perché? Ma per favore prova a creare il tuo stile – PedroAGSantos

risposta

2

Ho fatto in questo modo. Prova questo e fammi sapere se funziona per favore,

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

E in colors.xml o aggiungere variabili a colori in strings.xml, si prega di aggiungere il colore desiderato per la barra delle operazioni

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

e menzione il tema nel file manifesto

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

Grazie mille per l'allevatore, lo proverò –

+0

Funziona amico? – Sid

+2

Non lavorare ... – 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

Come e dove includo questo nel mio programma –

+0

in styles.XML –

+0

Devo creare styles.XML e metterlo nella cartella delle risorse. o lo metto in un'altra folde –

0

Questo ha funzionato per me

<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

Come spiegazione sulla risposta di @ SID, Per lo styling di Actionbar è necessario ignorare l'intero tema della propria app.

Se non esistono aggiungere Styles.XML e Colors.XML file nella cartella Resource>values e modificarle come di seguito:

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> 

colori.XML:

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

Ora passare alla Properties>AndroidManifest.xml e cambiare il tag <application> per fare riferimento il vostro tema personalizzato:

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

    </application> 

UPDATE:

Se siete disposti ad utilizzare AppCompat e ActionBarActivity poi si non sarà più necessario il ActionBarTheme in Styles.XML quindi ecco cosa Styles.XML sarà simile:

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

E il 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> 
Problemi correlati