【问题标题】:Set Background Drawable for Action Bar not working with color in colors.xml为操作栏设置背景可绘制对象不使用colors.xml中的颜色
【发布时间】:2015-01-18 08:43:44
【问题描述】:

我的片段中有以下代码:

 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,所以它不会为不同的布局类型采用错误的颜色。

【问题讨论】:

    标签: android android-actionbar colordrawable


    【解决方案1】:

    我发现这样做了!!

    代码如下:

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

    或者这里是另一个

    Fragment 中,ActionBar 视图通常通过覆盖:

    public override void OnCreateOptionsMenu(IMenu menu, MenuInflater inflater)
    

    回调方法;在确保您在OnCreate() 中调用了SetHasOptionsMenu(true);

    您可能会得到 NullReferenceException,因为在 ActionBar 布局膨胀之前调用了 OnCreateView()

    通常,方法如下所示:

    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
    }
    

    【讨论】:

      【解决方案2】:

      试试这个,它必须工作

          actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.primaryColor)));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-25
        • 2016-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-24
        • 2021-10-30
        • 1970-01-01
        相关资源
        最近更新 更多