2014-09-08 6 views
6

У меня есть маленький вопрос о ActionBar в Android. Я использую Xamarin Studio для создания приложения, и я хотел бы изменить цвет ActionBar. Я смотрел далеко и широко, чтобы изменить цвет, но это единственное, что я мог найти.Изменить Цвет ActionBar - Xamarin

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

я учил это будет работать, но теперь я получаю это исключение, и я не могу понять, почему это разве работает для меня.

Это исключение:

Object reference not set to an instance of an object 

Может кто-нибудь объяснить мне, что я doeing неправильно и, возможно, показать мне, как я могу это исправить.

Редактировать

После нескольких замечаний я попытался это:

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

Как добавить пользовательский цвет, и как я назначить это мой ActionBar

+0

Я думаю, что вы можете создать стиль взглянуть на https://developer.android.com/training/basics/actionbar/styling .html – PedroAGSantos

+0

Я мог бы это сделать, потому что кто-то попробовал это здесь: http://stackoverflow.com/questions/11770512/change-actionbar-background-color-in-code-from-navigation-list Кто-то сказал, что он работает – 2014-09-08 14:36:29

+0

Да, это может сработать, но если у вас есть шаблон, который делает все чистым, я думаю, вы можете попробовать. Если это не сработает, нам нужно понять, почему? Но попробуйте yo создать свой стиль – PedroAGSantos

ответ

2

Я сделал так. Попробуйте это и дайте мне знать, если это работает, пожалуйста,

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

И в colors.xml или добавить переменную цвет в strings.xml, пожалуйста, добавьте нужный цвет для панели действий

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

И упоминанием тема в файле манифеста

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

Большое спасибо за азерсера, я попробую его – 2014-09-09 06:40:13

+0

Это работает приятель? – Sid

+2

Не работает чувак ... – 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

Как и где я могу включить это в свою программу – 2014-09-09 06:51:56

+0

в styles.XML – 2014-09-09 11:46:11

+0

Мне нужно сделать styles.XML и поместить его в папку ресурсов. или я положил его в другую складку – 2014-09-09 12:02:08

0

Это работало для меня

<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

В качестве объяснения при ответе на @ SID. Для стилизации вашей панели действий вы должны переопределить всю тему своего приложения.

Если они не существуют добавить Styles.XML и Colors.XML файлы в папке Resource>values и редактировать их, как показано ниже:

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> 

цвета.XML:

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

Теперь перейдите к Properties>AndroidManifest.xml и изменить <application> тег для ссылки на настроенную тему:

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

    </application> 

UPDATE:

Если вы готовы использовать AppCompat и ActionBarActivity то вам больше не понадобится ActionBarTheme в Styles.XML, вот что такое Styles.XML будет выглядеть следующим образом:

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

И в 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> 
Смежные вопросы