我对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>
如何添加自定义颜色,以及如何将其指定到我的操作栏
答案 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.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>
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>
更新:
如果您愿意使用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>
答案 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)
您的问题是我的解决方案,我对您的代码进行了一些细微的修改并且可以正常工作,随附的是结果代码的图片示例,下面是您的代码以及我对代码的修改版本 >
//Define ActionBar
actionbar=SupportActionBar;
//Define Color Drawable
ColorDrawable colorDrawable = new ColorDrawable(Color.ParseColor("#ff0f62ae"));
//Set drawable color to ActionBar
actionbar.SetBackgroundDrawable(colorDrawable);