改变ActionBar颜色 - Xamarin

时间:2014-09-08 14:29:27

标签: c# android xamarin.android

我对Android中的ActionBar提出了一个小问题。 我正在使用Xamarin Studio制作应用程序,我想改变ActionBar的颜色。为了改变颜色,我看起来很宽阔,但这是我唯一能找到的东西。

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>

如何添加自定义颜色,以及如何将其指定到我的操作栏

6 个答案:

答案 0 :(得分:3)

我这样做了。试试这个,让我知道它是否有效,

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

答案 1 :(得分: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>

答案 2 :(得分: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>

答案 3 :(得分:0)

作为对@ SID答案的解释,为了设置Actionbar的样式,您必须覆盖应用程序的整个主题。

如果它们不存在,请在Styles.XML文件夹下添加Colors.XMLResource>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>

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

更新:

如果您愿意使用AppCompatActionBarActivity,那么您将不再需要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>

答案 4 :(得分:0)

一个非常简单的解决方案,转到你的&#34; styles.xml&#34;您的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>

答案 5 :(得分:0)

您的问题是我的解决方案,我对您的代码进行了一些细微的修改并且可以正常工作,随附的是结果代码的图片示例,下面是您的代码以及我对代码的修改版本enter image description here >

//Define ActionBar
       actionbar=SupportActionBar;
//Define Color Drawable
            ColorDrawable colorDrawable = new ColorDrawable(Color.ParseColor("#ff0f62ae"));
//Set drawable color to ActionBar
    actionbar.SetBackgroundDrawable(colorDrawable);