Próbuję odtworzyć wygląd Theme.AppCompat.Light.DarkActionBar
za pomocą nowego paska narzędzi Toolbar.
Jeśli wybiorę, Theme.AppCompat.Light
mój pasek narzędzi będzie jasny, a jeśli wybiorę Theme.AppCompat
, będzie ciemny. (Technicznie musisz użyć .NoActionBar
wersji, ale o ile wiem, jedyną różnicą jest
<style name="Theme.AppCompat.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
Teraz nie ma, Theme.AppCompat.Light.DarkActionBar
ale naiwnie pomyślałem, że wystarczy zrobić własne
<style name="Theme.AppCompat.Light.DarkActionBar.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
Jednak dzięki temu moje paski narzędzi są nadal Light
tematyczne. Spędziłem wiele godzin próbując różnych kombinacji mieszania motywu Dark (podstawowego) i motywu Light, ale po prostu nie mogę znaleźć kombinacji, która pozwoliłaby mi mieć jasne tło na wszystkim oprócz pasków narzędzi.
Czy istnieje sposób na uzyskanie AppCompat.Light.DarkActionBar
wyglądu za pomocą importu android.support.v7.widget.Toolbar
?
ThemeOverlay.AppCompat.ActionBar
biały pasek narzędzi z czarnym tekstem, więc wydaje się, że nie działa tak dobrze. Nie wydaje się troskami systemowych o<item name="android:colorBackground">@color/background_material_dark</item>
inBase.ThemeOverlay.AppCompat.Dark
. Ale będę kopać dalej. (I przeczytałem tę stronę. To był jeden z moich punktów wyjścia. Nadal nie wydaje się działać.)android:background="?attr/colorPrimary"
na pasku narzędzi i<item name="colorPrimary">@color/background_material_dark</item>
w moim stylu, więc automatycznie dostosowuje podstawowy kolor aplikacji.Edycja: Po aktualizacji do appcompat-v7: 22.1.1 i użyciu
AppCompatActivity
zamiastActionBarActivity
mojego styles.xml wygląda następująco:Uwaga: Oznacza to, że używam
Toolbar
dostarczonego przez framework (NIE zawartego w pliku XML).To zadziałało dla mnie:
plik styles.xml:
Aktualizacja: cytat z bloga Gabriele Mariotti .
źródło
Ok, po zbyt długim czasie zagłębiania się w ten problem, w ten sposób udało mi się uzyskać taki wygląd, na jaki liczyłem. Podaję osobną odpowiedź, aby wszystko było w jednym miejscu.
To kombinacja czynników.
Po pierwsze, nie próbuj ładnie odtwarzać paski narzędzi tylko za pomocą motywów. Wydaje się to niemożliwe.
Więc zastosuj motywy jawnie do swoich pasków narzędzi, tak jak w odpowiedzi oRR
layout / toolbar.xml
Jednak to jest magiczny sos. Aby faktycznie uzyskać kolory tła, na które liczyłem, musisz zastąpić
background
atrybut w motywach paska narzędzi Toolbarvalues / styles.xml:
następnie po prostu dołącz układ paska narzędzi do innych układów
i jesteś gotowy.
Mam nadzieję, że pomoże to komuś innemu, więc nie musisz poświęcać na to tyle czasu, co ja.
(jeśli ktoś może dowiedzieć się, jak sprawić, by to działało, używając tylko motywów, tj. bez konieczności stosowania motywów bezpośrednio w plikach układu, chętnie pomogę zamiast tego)
EDYTOWAĆ:
Najwyraźniej zamieszczenie pełniejszej odpowiedzi było magnesem negatywnym, więc zaakceptuję powyższą niekompletną odpowiedź, ale zostawię ją tutaj, na wypadek gdyby ktoś jej rzeczywiście potrzebował. Możesz jednak nadal głosować w dół, jeśli to cię uszczęśliwia.
źródło
<item name="colorPrimary">@color/colorPrimary</item>
Następnie mogę używaćandroid:background="?attr/colorPrimary"
atrybutu w moim widżecie paska narzędzi Toolbar.@android:color/transparent
, unikniesz problemu po długim naciśnięciu / kliknięciu pozycji menu, wokół tekstu znajduje się ramka. To również potwierdza przyszłość, jeśli kolor jasnego tła zmieni się w przyszłości.Najprostszym sposobem, w jaki udało mi się to zrobić, jest utworzenie elementu potomnego „ ThemeOverlay.AppCompat.Dark.ActionBar ”. W przykładzie ustawiłem kolor tła paska narzędzi na CZERWONY, a kolor tekstu na NIEBIESKI.
Następnie możesz zastosować motyw do paska narzędzi:
źródło
Aby dostosować styl paska narzędzi, najpierw utwórz niestandardowy styl paska narzędzi dziedziczący Widget.AppCompat.Toolbar, zastąp właściwości, a następnie dodaj go do niestandardowego motywu aplikacji, jak pokazano poniżej, zobacz http://www.zoftino.com/android-toolbar-tutorial dla Więcej informacji pasek narzędzi i style.
źródło
Możesz spróbować tego poniżej.
I szczegółowe elementy, które możesz znaleźć na https://developer.android.com/reference/android/support/v7/appcompat/R.styleable.html#Toolbar
Oto kilka:
TextAppearance.Widget.AppCompat.Toolbar.Title
,TextAppearance.Widget.AppCompat.Toolbar.Subtitle
,Widget.AppCompat.Toolbar.Button.Navigation
.Mam nadzieję, że to może ci pomóc.
źródło
Podobny do Arnav Rao, ale z innym rodzicem:
Dzięki takiemu podejściu wygląd paska narzędzi jest całkowicie zdefiniowany w stylach aplikacji, więc nie ma potrzeby umieszczania stylów na każdym pasku narzędzi.
źródło
android:toolbarStyle
to API 21+ dlaandroid.widget.Toolbar
.toolbarStyle
jest AppCompat dlaandroid.support.v7.widget.Toolbar
.MyToolbar
styl nie powinien rozszerzaćWidget.AppCompat.Toolbar
tematu.