从导航列表中以编程方式更改ActionBar背景颜色

5

当用户在导航列表中选择某个选项时,我希望更改操作栏背景的颜色。

目前,我的代码如下:

@Override
    public boolean onNavigationItemSelected(int itemPosition, long itemId) {
        ColorDrawable colorDrawable = new ColorDrawable();
        ActionBar actionBar = getActionBar();
        if(itemPosition == 0)
        {
            colorDrawable.setColor(0xffFEBB31);
            actionBar.setBackgroundDrawable(colorDrawable);
            return true;
        }
        if(itemPosition == 1)
        {
            colorDrawable.setColor(0xff9ACC00);
            actionBar.setBackgroundDrawable(colorDrawable);
            return true;
        }
        return false;
    }

然而,当我第一次选择导航列表中的itemPosition 1时,它会将ActionBar的颜色更改为白色。
第二次点击导航列表中的itemPosition 1时,我没有任何问题。
有人能告诉我为什么会这样,以及如何解决这个问题吗?感谢帮助!

你解决了这个问题吗? - Mark Gjøl
3个回答

10

尝试使用这段代码:

ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#ffFEBB31"));
actionBar.setBackgroundDrawable(colorDrawable); 

这基本上与原帖所问的相同,只是选择颜色的方式稍有不同。它对解决问题没有任何帮助。 - Mark Gjøl
我以前用过这个方法,它是有效的。按照Tykin提到的十六进制方法进行更改,正好符合问题所述。也许有人可以解释一下为什么Tykin的方法在这种情况下不起作用。 - Trevor
这个可以用。我只是把0x改成了#,然后它就正常工作了,你有什么想法吗? - Jiyda Moussa
1
@JMint 文档中指出,“支持的格式有:#RRGGBB #AARRGGBB 'red', 'blue' ...”,如果它正在寻找一个 int 作为参数(例如使用方法 public static int rgb (int red, int green, int blue)),则应使用 0x。请查看 http://developer.android.com/reference/android/graphics/Color.html 获取更多信息。 - Trevor

6

试试这个:

myActivity.invalidateOptionsMenu();

0

我遇到了同样的问题。

对于使用 Visual Studio 或类似工具的 Xamarin 用户,请将以下内容粘贴到 activity 类中 SetContentView(Resource.Layou...... 后面。

// 设置 ActionBar(工具栏) 的背景颜色 var actionBar = this.ActionBar; actionBar.SetBackgroundDrawable(new ColorDrawable(Color.Black));

您可以根据需要更改它或在 actionBar 变量上执行其他操作。

谢谢,希望对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接