我的片段中有以下代码:
getActionBar().setBackgroundDrawable(new ColorDrawable(Color.Black));
当我点击片段中的按钮时,它会调用此代码。我将动作栏设置为黑色。但是,如果我将颜色更改为R.color.primaryColor
,则会将操作栏设置为中灰色。它太奇怪了。如果我将它设置为R.color.primaryColorDark
,它会给我相同的灰色。
我正在使用支持操作栏,它实际上是一个工具栏。
我错过了一些明显的东西吗?
[编辑]
好的,我发现如果我使用了android颜色liek Color.BLUE
它工作正常,当我使用R.colors.mycustomcolor
这是我的colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primaryColor">#2196F3</color>
<color name="primaryColorDark">#1976D2</color>
<color name="accentColor">#1976D6</color>
</resources>
当我将动作栏设置为任何这些颜色时,它们会变灰。
我只有一个color.xml,因此不会为不同的布局类型选择错误的颜色。
答案 0 :(得分:0)
我发现要做到这一点!!
以下是代码:
public override void OnAttach(Activity activity) {
base.OnAttach(activity);
var colorDrawable = new ColorDrawable(Color.White);
activity.ActionBar.SetBackgroundDrawable(colorDrawable);
var titleId = activity.Resources.GetIdentifier("action_bar_title", "id","android");
var abTitle = activity.FindViewById<TextView>(titleId);
abTitle.SetTextColor(Color.Black);
}
或另外一个
n Fragment
,ActionBar
视图通常通过覆盖以下内容来处理:
public override void OnCreateOptionsMenu(IMenu menu, MenuInflater inflater)
回调方法;确保您在SetHasOptionsMenu(true);
中调用了OnCreate()
。
由于在NullReferenceException
布局被夸大之前调用OnCreateView()
,您可能会得到ActionBar
。
通常,这就是方法的样子:
public override void OnCreateOptionsMenu(IMenu menu, MenuInflater inflater) {
//Stops the menu being reinflated on configuration changes
if(!menu.HasVisibleItems)
inflater.Inflate(Resource.Menu.MenuLayout, menu);
var myMenuItem = menu.FindItem(Resource.Id.MyMenuItem);
//Do stuff with your menu items
}
答案 1 :(得分:0)
试试这个,它必须工作
actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.primaryColor)));