Изменить цвет панели действий программно более одного раза
Я использую
getSherlockActivity().getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xff00ACED));
Чтобы изменить цвет моей панели действий в фрагменте, и это работает. Но если я открою этот фрагмент, то открою другой фрагмент, который вызывает этот метод с другим цветом, панель действий не изменится на нужный цвет. Вместо этого он превращается в белый цвет вместо того цвета, на который я его установил.
7 ответов
Это быстрое решение, которое я нашел
mActionBar.setBackgroundDrawable(new ColorDrawable(0xff00DDED));
mActionBar.setDisplayShowTitleEnabled(false);
mActionBar.setDisplayShowTitleEnabled(true);
Попробуй это,
Method1:
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xff00FFED));
Method2:
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources()
.getColor(R.color.bg_color)));
method3:
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#3A1212")));
У меня была такая же проблема, ответ от 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)));
Если вы хотите установить цвет панели действий и выбрать цвет в виде строки, мне кажется, это работает.
getSupportActionBar().setBackgroundDrawable(
new ColorDrawable(Color.parseColor("#993b3c4e")));
Возможно, вам придется включить и отключить заголовок, чтобы он обновлялся / отображался правильно, как в ответе пользователя 1634451, но в моем случае мне это не нужно.
Если вы хотите избежать устаревания, вы можете использовать
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(новый ColorDrawable(getResources(). GetColor(R.color.colorPrimary)));
Во фрагменте и Java