Изменение цвета панели действий-Xamarin

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

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

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

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

Object reference not set to an instance of an object

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

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

после нескольких комментариев я попробовал это:

<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

5 ответов


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

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

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

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

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

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

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>

это сработало для меня

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

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

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

стили.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>

обновление :

если вы готовы использовать 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>

очень простое решение, перейдите к своим "стилям".xml " файл на вашем Xamarin.Проект Android, и просто заменить или добавить эти свойства в свой стиль:

<!-- colorPrimary is used for the default action bar background -->    
<item name="colorPrimary">#002500</item>
<!-- colorPrimaryDark is used for the status bar #4FAB5B-->
<item name="colorPrimaryDark">#002500</item>