Udało mi się dostosować tło paska działania, obraz logo i kolor tekstu, korzystając z następujących sugestii:
Android: Jak zmienić ikonę „Strona główna” ActionBar na inną niż ikona aplikacji?
Kolor tekstu
ActionBar Obraz tła ActionBar
Ostatnim elementem, który chcę dostosować, jest obraz przycisku wstecz. Domyślnie jest szary i chciałbym, żeby był biały. Działa albo zmiana koloru, określenie rysunku lub po prostu uczynienie go przezroczystym (i dodanie szewronu do mojego niestandardowego obrazu logo). Jak mam to zrobić?
android
android-actionbar
Sunil Gowda
źródło
źródło
setDisplayHomeAsUpEnabled()
sprawieActionBar
. W szczególności NIE powinno się po prostu „cofać”. Oznacza to, że dotknięcie ikony aplikacji spowoduje przejście do „hierarchii” w górę, a nie powrót do poprzedniej aktywności (podobnie jak przycisk WSTECZ na pasku systemowym).Odpowiedzi:
Wskaźnik afordancji „w górę” zapewnia rysownica określona w
homeAsUpIndicator
atrybucie motywu. Aby zastąpić go własną wersją niestandardową, byłoby to mniej więcej tak:Jeśli aplikacja obsługuje wersję starszą niż 3.0, upewnij się, że umieściłeś tę wersję motywu niestandardowego w
values-v11
podobnym formacie.źródło
<item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>
nie działało dla mnie, ale działało<item name="homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>
. Zgadnij, to jest wersja na AndroidaNavigation Drawer
? Myślę, żeActionBarDrawerToggle
zamienia wskaźnik up na własny, dlatego ustawienie go na styl nie ma żadnego efektu ...Możesz więc łatwo to programowo zmienić za pomocą funkcji homeAsUpIndicator (), która została dodana w interfejsie API Androida na poziomie 18 i wyższym.
ActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);
Jeśli korzystasz z biblioteki wsparcia
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);
źródło
drawerToggle.setDrawerIndicatorEnabled(false);
przed zmianą wskaźnikaSprawdziłem pytanie. Oto kroki, które wykonuję. Kod źródłowy znajduje się na GitHub: https://github.com/jiahaoliuliu/sherlockActionBarLab
Zastąp rzeczywisty styl urządzeń starszych niż 11.
Skopiuj i wklej poniższy kod w pliku styles.xml folderu wartości domyślnych.
Pamiętaj, że rodzic można zmienić na dowolny motyw Sherlocka.
Zastąp rzeczywisty styl urządzeń v11 +.
W tym samym folderze, w którym znajdują się wartości folderu, utwórz nowy folder o nazwie values-v11. Android automatycznie wyszuka zawartość tego folderu w przypadku urządzeń z interfejsem API lub nowszym.
Utwórz nowy plik o nazwie styles.xml i wklej następujący kod do pliku:
Pamiętaj, że nazwa stylu musi być taka sama jak plik w folderze wartości domyślnych, a zamiast elementu homeAsUpIndicator nazywa się android: homeAsUpIndicator.
Problem polega na tym, że w przypadku urządzeń z interfejsem API 11 lub nowszym pasek akcji Sherlock korzysta z domyślnego paska akcji dostarczanego z systemem Android, którego kluczową nazwą jest android: homeAsUpIndicator. Ale w przypadku urządzeń z API 10 lub niższym pasek akcji Sherlock wykorzystuje własny pasek ActionBar, który wskaźnik home up nazywa się prostym „homeAsUpIndicator”.
Użyj nowego motywu w manifeście
Zamień motyw aplikacji / działania w pliku AndroidManifest:
źródło
Zmiana ikony nawigacji wstecz różni się dla ActionBar i paska narzędzi.
W przypadku atrybutu zastąpienia ActionBar
homeAsUpIndicator
:W przypadku
navigationIcon
atrybutu zastąpienia paska narzędzi :źródło
Zrobiłem poniższy kod
onCreate()
i pracowałem ze mnąźródło
Jeśli korzystasz z paska narzędzi Toolbar, nie potrzebujesz tych rozwiązań. Musisz tylko zmienić motyw paska narzędzi
Jeśli używasz paska dark.actionBar, przycisk Wstecz będzie biały, a jeśli używasz jasnego motywu paska akcji, będzie czarny.
źródło
podaj to:
wewnątrz
onCreate()
;źródło
Użyłem obrazu back.png w pliku menifest.xml projektu. dobrze działa w projekcie.
źródło
Miałem ten sam problem z kierunkiem ikony przycisku na pasku akcji ze względu na brak zarządzania ikoną w ikonie katalogu zasobów Gradle
tak jak w katalogu zasobów Gradle arabskiego umieścisz ikonę w x-hdpi, a w języku angielskim Gradle zasób tę samą nazwę ikony umieściłeś w innym folderze gęstości, jak xx-hdpi, tak że w APK będą dwie takie same nazwy ikon w różnych katalogach, więc twoje urządzenie wybierz ikonę zależną od gęstości może być RTL lub LTR
źródło