2013-06-12 15 views
38

UżywamZmiana koloru actionbar programowo więcej niż raz

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

Aby zmienić kolor moim pasku akcji we fragmencie i to działa. Ale jeśli otworzę ten fragment, a następnie otworzę kolejny fragment, który wywoła tę metodę z innym kolorem, pasek akcji nie zmieni się na pożądany kolor. Zamiast tego zmienia kolor na biały zamiast koloru, który ustawiłem.

Odpowiedz

71

jest szybkie ustalenie, że znalazłem

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

To wydarzyło się tylko dla mnie na jednym urządzeniu ... Wysadzona Motorola Xoom. Jednak rozwiązało to problem! W moim przypadku przełączenie wyświetlania tytułu musiało zostać odwrócone, ponieważ nie pokazywałem tytułu. – Justin

+0

Mogę to potwierdzić również rozwiązać problem na LG-P880g. Ty mój przyjacielu, jesteś niesamowity! Dziękuję Ci! – JVillella

+0

Musiałem użyć zasobu kolorów podczas korzystania z paska akcji wsparcia. getSupportActionBar(). setBackgroundDrawable (new ColorDrawable (getResources(). getColor (R.color.swift))); –

11

miałem ten sam problem, answer from user1634451 działało, ale tylko raz (nie pozwoliłby kilka przełączników koloru w wierszu)

To zdecydowanie poprawiony:

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

Zamiast bezpośrednio z linkami do koloru robi new ColorDrawable(R.color.app_bar_online)

+0

tego właśnie szukałem :) –

+0

Używam 'ContextCompat' zamiast' getResources', ponieważ używam biblioteki pomocniczej. Również 'getResources(). GetColor (int)' jest obecnie przestarzałe. –

5

getColor jest przestarzałe. używać ContextCompat:

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

Dzięki. W przypadku, gdy ktoś wybiera kolor z tablicy kolorów, użyj ** bodyColor [index] ** zamiast ** ContextCompat.getColor (context, R.color.app_bar_online) **. – CoDe

+0

Korzystając z tego rozwiązania, otrzymuję w tym momencie wyjątek NullPointerException (nawet ostrzeżenie z AS). Czemu? – MUmla

4

Jeśli chcesz ustawić kolor ActionBar i mają kolor jako String, to wydaje się działać dla mnie.

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

Być może trzeba włączyć & wyłączyć tytuł, aby ją odświeżyć/wyświetlacz właściwie jak w odpowiedzi udzielonej przez user1634451, ale nie trzeba było w moim przypadku.

14

Spróbuj tego

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"))); 
Powiązane problemy