56

我在用

getSherlockActivity().getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xff00ACED));

在片段中更改我的操作栏的颜色并且它可以工作。但是,如果我打开这个片段,然后打开另一个片段,用不同的颜色调用这个方法,则操作栏不会更改为所需的颜色。相反,它变成了白色,而不是我设置的颜色。

4

8 回答 8

83

这是我发现的一个快速修复

mActionBar.setBackgroundDrawable(new ColorDrawable(0xff00DDED));
mActionBar.setDisplayShowTitleEnabled(false);
mActionBar.setDisplayShowTitleEnabled(true);
于 2013-06-19T18:28:37.030 回答
42

尝试这个,

方法1:

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xff00FFED));

方法2:

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources()
                    .getColor(R.color.bg_color)));

方法3:

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#3A1212")));

科特林

supportActionBar?.setBackgroundDrawable(ColorDrawable(ContextCompat.getColor(this, android.R.color.black)))
于 2016-04-18T07:45:55.273 回答
15

我遇到了同样的问题,user1634451 的回答有效,但只有一次(不会连续启用多个颜色开关)

这绝对解决了它:

bar.setBackgroundDrawable(new ColorDrawable(getResources()
                    .getColor(R.color.app_bar_online)));

而不是直接链接到颜色做new ColorDrawable(R.color.app_bar_online)

于 2015-04-22T16:15:40.610 回答
11

getColor 已弃用。使用 ContextCompat :

bar.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(context, R.color.app_bar_online)));
于 2016-03-24T11:07:29.110 回答
5

如果您想设置 ActionBar 的颜色并将颜色作为字符串,这似乎对我有用。

    getSupportActionBar().setBackgroundDrawable(
            new ColorDrawable(Color.parseColor("#993b3c4e")));

您可能必须启用和禁用标题才能使其正确刷新/显示,就像user1634451给出的答案一样,但在我的情况下我不需要。

于 2016-04-14T19:53:59.460 回答
4

如果你想避免弃用,你可以使用

val mActionBar: ActionBar? = supportActionBar    
mActionBar.setBackgroundDrawable(ColorDrawable(ContextCompat.getColor(this, R.color.red)))

科特林语言

于 2018-09-26T01:50:51.930 回答
-1

如果您想务实地更改操作栏颜色或背景,则只需使用,

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                getSupportActionBar().setBackgroundDrawable(getDrawable(R.drawable.white_background));
            }

white_background.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#fff" />

于 2018-04-28T13:00:48.853 回答
-1

((AppCompatActivity) getActivity()).getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.colorPrimary)));

在片段和Java

于 2020-02-19T11:06:03.587 回答