2012-04-08 26 views
37

Próbuję zaimplementować ActionBarSherlock, ponieważ powiedziano mi, że jest stosunkowo łatwy w implementacji i dostosowaniu. Stwierdziłem, że było to łatwe do wdrożenia, ale próbuję zmienić kolor tła paska akcji i jest to trudne.Zmiana koloru tła ActionBarSherlock

Zgodnie z witryną (link) wygląda na to, że można dziedziczyć jeden z motywów ActionBarSherlock, a następnie przesłonić wymagane właściwości.

To, co mam tak daleko:

<?xml version="1.0" encoding="UTF-8"?> 
<resources> 
    <style name="Theme.ActionBar" parent="Theme.Sherlock.ForceOverflow"> 
     <item name="android:background">#000000</item> 
     <item name="background">#000000</item> 
    </style> 
</resources> 

mam zauważając wbudowany temat używania obrazów jako tło, ale modlę się nie mam do tworzenia obrazów, aby zmienić kolor tła.

Dzięki.

Odpowiedz

77

Kolor tła paska czynności jest zdefiniowany w stylu paska akcji, a nie w samym motywie. Będziesz musiał zrobić coś takiego:

<style name="Theme.MyTheme" parent="Theme.Sherlock.ForceOverflow"> 
    <item name="actionBarStyle">@style/Widget.MyTheme.ActionBar</item> 
    <item name="android:actionBarStyle">@style/Widget.MyTheme.ActionBar</item> 
</style> 

<style name="Widget.MyTheme.ActionBar" parent="Widget.Sherlock.ActionBar"> 
    <item name="android:background">#ff000000</item> 
    <item name="background">#ff000000</item> 
</style> 

Bądź ostrożny używając kolorów zdefiniowanych w XML. ColorDrawable nie respektował granic widoku w trybie "Honeycomb", więc jeśli korzystasz z nawigacji po kartach z oddzielnym tłem dla widoku ułożonego w stos, będziesz mieć problemy.

+0

Dzięki za odpowiedź. Nie używam kart ani niczego, tylko jeden pasek akcji z niektórymi czynnościami, więc można używać kolorów zamiast obrazów? Używam ActionBarSherlock w 8 różnych aplikacjach i nie mam kompetencji do tworzenia obrazów. –

+0

BTW, twój kod pracował nad dodaniem koloru tła. Dzięki. –

+0

Można bezpiecznie używać kolorów, o ile nie używa się go do ułożenia stosu tła. Regularne tło i podział tła będą dobrze, ale w wersji przed 3.0 za pomocą koloru stosu nie będą wyświetlane poprawnie. –

54

Używałem

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00853c"))); 

To zmieniło kolor tła. Mam nadzieję, że to pomoże.

+4

krótkie i słodkie ... –

+2

@alicanbatur to, ale jeśli planujesz mieć swój własny styl w pasku akcji i używać go wzdłuż całej aplikacji, nie jest to bardzo miłe, jeśli wkleisz ten wiersz kodu w każdej klasie, w której chcesz zmodyfikować swoje tło :) – noloman

+0

Dzięki za uratowanie wielu wysiłków. –

2

Kod wspomniany przez Jake'a Whartona jest prawdziwy. Jednak przy stosowaniu kodu do styles.xml nie może działać, jeśli masz minSDK < 11 bo android: actionBarStyle jest obsługiwana w API-11 +

Aby rozwiązać ten błąd:

utwórz folder wartości-V11 w folderze res i utwórz plik XML, jak wspomniano powyżej.

+1

To rozwiązuje tylko problem dla> = 11. –