2

我正在使用这个简单的代码:

ActionBar bar = this.getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(0xFF99CC00));

单击 imageView 时会触发此代码。

这应该将 ActionBar 的背景颜色更改为绿色,但它显示为白色(它正在删除颜色,也许?)

你们知道为什么会这样吗?

但是,如果我在onCreate方法上执行此操作,它将被更改。

(当我开始这个活动时,我会检查以放置颜色或其他颜色):

if (this.isAccepted == -1){
    //nothing
    } else if (this.isAccepted == 0){
        //vermell
        ActionBar bar = this.getActionBar();
        bar.setBackgroundDrawable(new ColorDrawable(0xFFFF4444));
    } else if (this.isAccepted == 1){
        ActionBar bar = this.getActionBar();
        bar.setBackgroundDrawable(new ColorDrawable(0xFF99CC00));

如您所见,代码完全相同,但在单击 imageView 后运行代码时并没有更改。

编辑: 实际上可以动态编辑操作栏吗?或者只是在启动应用程序时?

编辑2:

我尝试过 onCreate,将 bar 设置为变量,然后尝试访问它,但它的作用完全相同。

编辑3:

做一些编辑来增加帖子。这太奇怪了。我检查了文档,它没有提到“你不能改变背景两次”之类的东西。

也许我必须使其无效?我真的不知道……该死的。

Edit4:试图解决这个问题......我还没有找到答案......

4

2 回答 2

4

行。正如我在我的一次编辑中所说,您必须请求 actionBar。由于我们没有方法,我们可以使用一种解决方法:

this.bar.setDisplayShowTitleEnabled(false);
this.bar.setDisplayShowTitleEnabled(true);

这是有效的。

于 2013-06-20T09:27:47.160 回答
1

您当然可以通过编程方式更改 ActionBar 颜色。我通常在 onCreateOptionsMenu 方法中执行此操作。这很简单:

actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.Amethyst)));

注意:在项目的 res/values/colors.xml 文件中设置颜色名称

于 2014-06-02T00:05:12.497 回答