C# 更改操作栏颜色-Xamarin
我有一个关于Android中的C# 更改操作栏颜色-Xamarin,c#,android,xamarin.android,C#,Android,Xamarin.android,我有一个关于Android中的ActionBar的小问题。 我正在使用Xamarin Studio制作一个应用程序,我想更改ActionBar的颜色。我到处寻找改变颜色的方法,但这是我唯一能找到的 ColorDrawable colorDrawable = new ColorDrawable(Color.ParseColor("#ff0f62ae")); this.ActionBar.SetBackgroundDrawable(colorDrawable); 我原以为
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>
@样式/MyActionBar
@颜色/
@样式/MyActionBartext外观
@颜色/默认值为白色
如何添加自定义颜色,以及如何将其分配给我的actionbar,我是这样做的。试试这个,如果有用请告诉我
<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>
#3450A3
并在清单文件中提到主题
<application
android:theme="@style/AppTheme" >
试试这个:
#f00
@样式/我的文本外观
#ffffff
这对我很有效
<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>
#2C3E50
#FFFFFF
@style/MyTheme.ActionBarStyle
@style/MyTheme.ActionBar.TitleTextStyle
@颜色/背景颜色
@颜色/动作BartextColor
作为对@SID答案的解释,要设置Actionbar的样式,您必须覆盖应用程序的整个主题
如果它们不存在,请在Resource>values
文件夹下添加style.XML
和Colors.XML
文件,并按如下方式编辑它们:
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>
更新:
如果您愿意使用AppCompat
和ActionBarActivity
,那么您将不再需要Styles.XML
中的ActionBarTheme
,以下是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>
这是一个非常简单的解决方案,请转到Xamarin.Android项目中的“styles.xml”文件,然后将以下属性替换或添加到样式中:
<!-- 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>
#002500
#002500
您的问题是我的解决方案,我使用了您的代码,做了一些轻微的修改,效果很好,随附的是结果代码的图片示例,下面是您的代码加上我修改过的代码版本
//Define ActionBar
actionbar=SupportActionBar;
//Define Color Drawable
ColorDrawable colorDrawable = new ColorDrawable(Color.ParseColor("#ff0f62ae"));
//Set drawable color to ActionBar
actionbar.SetBackgroundDrawable(colorDrawable);
我想你可以创建一个样式看看我认为上面的可能,因为有人在这里尝试过:有人说它有效是的,它可能有效,但如果你有一个模式,使一切都干净,我认为你可以尝试。如果它不起作用,我们需要看看为什么?但请尝试创建你的样式ActionBar=getActionBar();条形可退根拉深(新彩色可退根拉深(蓝色));getActionBar对我不起作用,我会试试看it@Mayank请确保在您的自定义应用程序主题窗口ActionBar已关闭,NoTitle已打开。
false true
如何以及在何处将其包括在我的程序中我必须制作styles.XML并将其放入resources文件夹中。或者我是否将其放入n另一个文件夹
<?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>
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<color name="DarkBlue">#0052cc</color>
<color name="Pink">#ff1ac6</color>
<color name="LightBlue">#1a75ff</color>
</resources>
<!-- 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>
//Define ActionBar
actionbar=SupportActionBar;
//Define Color Drawable
ColorDrawable colorDrawable = new ColorDrawable(Color.ParseColor("#ff0f62ae"));
//Set drawable color to ActionBar
actionbar.SetBackgroundDrawable(colorDrawable);