it-swarm.com.de

Ändern Sie die Farbe der Aktionsleiste mehrmals programmgesteuert

Ich benutze 

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

So ändern Sie die Farbe meiner Aktionsleiste in einem Fragment und es funktioniert. Wenn ich aber dieses Fragment öffne, dann ein anderes Fragment, das diese Methode mit einer anderen Farbe aufruft, öffnet sich die Aktionsleiste nicht in der gewünschten Farbe. Stattdessen wird die Farbe weiß und nicht die Farbe, auf die ich sie eingestellt habe.

44
user1634451

dies ist eine schnelle Lösung, die ich gefunden habe 

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

Versuche dies,

Methode 1:

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

Methode2:

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

Methode3:

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

Ich hatte das gleiche problem, antwort von user1634451 arbeitete aber nur einmal (würde nicht mehrere farbschalter hintereinander aktivieren)

Dies hat es definitiv behoben:

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

Anstatt direkt auf die Farbe zu verweisen, machen Sie new ColorDrawable(R.color.app_bar_online)

14
antoinem

getColor ist veraltet. Verwenden Sie ContextCompat: 

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

Wenn Sie die Farbe der ActionBar festlegen und die Farbe als String festlegen möchten, scheint dies für mich zu funktionieren.

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

Möglicherweise müssen Sie den Titel aktivieren und deaktivieren, damit er wie in der Antwort von user1634451 richtig aktualisiert/angezeigt wird. In meinem Fall war dies jedoch nicht erforderlich.

4
welshk91

Wenn Sie die Actionbar-Farbe oder den Hintergrund pragmatisch ändern möchten, verwenden Sie einfach

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" />

0
Nazmus Saadat

Wenn Sie eine Abwertung vermeiden möchten, können Sie sie verwenden

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

Kotlin-Sprache

0
GDNarvaez