以编程方式多次更改操作栏颜色

时间:2013-06-12 23:18:11

标签: android

我正在使用

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

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

8 个答案:

答案 0 :(得分:77)

这是我发现的快速修复

mActionBar.setBackgroundDrawable(new ColorDrawable(0xff00DDED));
mActionBar.setDisplayShowTitleEnabled(false);
mActionBar.setDisplayShowTitleEnabled(true);

答案 1 :(得分:27)

试试这个,

<强>方法一:

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

<强>方法2:

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

<强>方法3:

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

答案 2 :(得分:14)

我遇到了同样的问题,answer from user1634451只能工作一次(不会连续启用多个颜色开关)

这肯定解决了它:

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

而不是直接链接到执行new ColorDrawable(R.color.app_bar_online)

的颜色

答案 3 :(得分:10)

不推荐使用getColor。使用ContextCompat:

bar.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(context, R.color.app_bar_online)));

答案 4 :(得分:4)

如果你想设置ActionBar的颜色并将颜色设置为String,这似乎对我有用。

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

你可能需要启用&amp;禁用标题以使其像user1634451给出的答案一样正确刷新/显示,但在我的情况下我并不需要。

答案 5 :(得分:2)

如果要避免过时,可以使用

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

科林语

答案 6 :(得分:-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" />

答案 7 :(得分:-1)

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

在片段和Java中