设置背景Drawable for Action Bar不使用colors.xml中的颜色

时间:2015-01-18 08:43:45

标签: android android-actionbar colordrawable

我的片段中有以下代码:

 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,因此不会为不同的布局类型选择错误的颜色。

2 个答案:

答案 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 FragmentActionBar视图通常通过覆盖以下内容来处理:

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