我在用
getSherlockActivity().getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xff00ACED));
在片段中更改我的操作栏的颜色并且它可以工作。但是,如果我打开这个片段,然后打开另一个片段,用不同的颜色调用这个方法,则操作栏不会更改为所需的颜色。相反,它变成了白色,而不是我设置的颜色。
我在用
getSherlockActivity().getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xff00ACED));
在片段中更改我的操作栏的颜色并且它可以工作。但是,如果我打开这个片段,然后打开另一个片段,用不同的颜色调用这个方法,则操作栏不会更改为所需的颜色。相反,它变成了白色,而不是我设置的颜色。
这是我发现的一个快速修复
mActionBar.setBackgroundDrawable(new ColorDrawable(0xff00DDED));
mActionBar.setDisplayShowTitleEnabled(false);
mActionBar.setDisplayShowTitleEnabled(true);
尝试这个,
方法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)))
我遇到了同样的问题,user1634451 的回答有效,但只有一次(不会连续启用多个颜色开关)
这绝对解决了它:
bar.setBackgroundDrawable(new ColorDrawable(getResources()
.getColor(R.color.app_bar_online)));
而不是直接链接到颜色做new ColorDrawable(R.color.app_bar_online)
getColor 已弃用。使用 ContextCompat :
bar.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(context, R.color.app_bar_online)));
如果您想设置 ActionBar 的颜色并将颜色作为字符串,这似乎对我有用。
getSupportActionBar().setBackgroundDrawable(
new ColorDrawable(Color.parseColor("#993b3c4e")));
您可能必须启用和禁用标题才能使其正确刷新/显示,就像user1634451给出的答案一样,但在我的情况下我不需要。
如果你想避免弃用,你可以使用
val mActionBar: ActionBar? = supportActionBar
mActionBar.setBackgroundDrawable(ColorDrawable(ContextCompat.getColor(this, R.color.red)))
科特林语言
如果您想务实地更改操作栏颜色或背景,则只需使用,
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" />
((AppCompatActivity) getActivity()).getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.colorPrimary)));
在片段和Java