6

Próbuję zmienić kolor tła mojego paska akcji, ale to się nie zmienia. Moja aplikacja używa motywu AppCompat, jeśli ma to wpływ na cokolwiek.Android ActionBar niezmieniający się kolor tła

Oto mój motyw, który jest używany. Moje punkty aplikacji do korzystania z tego tematu, więc to nie jest problem

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <item name="actionBarStyle">@style/ActionBar</item> 
</style> 

<!-- Action Bar Styles --> 
<style name="ActionBar" parent="Widget.AppCompat.ActionBar"> 
    <item name="android:background">@color/blue</item> 
    <item name="background">@color/blue</item> 
</style> 

+0

jesteś również za pomocą ** AppTheme ** w oczywisty? – waqaslam

+0

@waqaslam yup. Czy robię coś złego w tym kodzie? –

+1

Brak AFAIR @ style/ActionBar dla interfejsu API> 11. Szczegółowe informacje można znaleźć na stronie https://developer.android.com/training/basics/actionbar/styling.html. –

Odpowiedz

14

W stylu ActionBar usuń tło android: background, zachowaj tylko atrybut tła. Upewnij się także, że zaimplementowałeś swój AppTheme w znaczniku aplikacji lub w działaniach rozszerzających pasek akcji w pliku AndroidManifest.xml. Dodałem również atrybut "@ style /" przed Widget.AppCompat, ponieważ jest to domyślny styl zdefiniowany w bibliotece Androida.

Kod powinien wyglądać następująco:

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <item name="actionBarStyle">@style/ActionBar</item> 
</style> 

<!-- Action Bar Styles --> 
<style name="ActionBar" parent="@style/Widget.AppCompat.ActionBar"> 
    <item name="background">#0000ff</item> 
</style> 
+1

zwróć uwagę, aby używać zarówno nazw "** android: ** actionBarStyle" i "actionBarStyle" w celu zapewnienia zgodności z obszarami nazw tła –

0

Można se to z kodu oraz

ab.setBackgroundDrawable (nowa ColorDrawable (newcolor));

Tylko w przypadku, gdy xml nie działa

+0

Chcę mieć go w formie XML, więc mogę używać kolorowej aplikacji i nie muszę dodawać tej linii do każdej aktywności. –

+0

tutaj idziesz ANY_HEX_COLOR_CODE Jednym z powodów jest to nie działa, ponieważ masz niewłaściwego rodzica dla znacznika stylu – Amrut

+0

Nie działał jeszcze –

0

Według tego linku, https://developer.android.com/reference/android/R.attr.html#background nie wydaje się, aby wziąć kolorów zasób, więc albo nadać mu wartość koloru hex lub utwórz rozciągliwej, która używa koloru chcesz. Możesz wypróbować następującą alternatywę, aby sprawdzić, czy działa.

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <item name="actionBarStyle">@style/ActionBar</item> 
</style> 

<!-- Action Bar Styles --> 
<style name="ActionBar" parent="Widget.AppCompat.ActionBar"> 
    <item name="android:background">#0000ff</item> 
    <item name="background">#0000ff</item> 
</style> 
+0

Używając narzędzia do kompilacji 21.1.2, nie pozwala na nadawanie kolorów bezpośrednio motywom. Możesz * podać *, używając "@ color" lub '@ drawable'. –