2014-10-24 8 views
5

Chciałbym mieć dwa różne paski android.support.v7.widget.Toolbars w mojej aplikacji, jedną ciemną, jedną lampkę i przełączać się między nimi, gdy zajdzie taka potrzeba. Jednak po ustawieniu innego motywu na drugim pasku narzędzi wydaje się, że zresetował motyw na pierwszym pasku narzędzi.Dodanie dwóch pasków narzędzi AppCompat z różnymi motywami

Czy to błąd lub zamierzone zachowanie?

Toolbar 1:

<android.support.v7.widget.Toolbar 
xmlns:sothree="http://schemas.android.com/apk/res-auto" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/main_toolbar" 
android:layout_height="?attr/actionBarSize" 
android:layout_width="match_parent" 
android:layout_gravity="top" 
android:background="@drawable/action_bar_background" 
sothree:theme="@style/ThemeOverlay.AppCompat.ActionBar" 
sothree:contentInsetStart="0dp"/> 

Toolbar 2:

<android.support.v7.widget.Toolbar 
xmlns:sothree="http://schemas.android.com/apk/res-auto" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/clip_toolbar" 
android:layout_height="?attr/actionBarSize" 
android:layout_width="match_parent" 
android:layout_gravity="top" 
android:background="@android:color/transparent" 
sothree:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
sothree:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
sothree:contentInsetStart="0dp"/> 

Odpowiedz

0

Zrób ContextThemeWrapper:

ContextThemeWrapper wrapper = new ContextThemeWrapper(context, R.style.Some_Theme); 

wykorzystać obecny kontekst nadmuchać jeden pasek narzędzi i użyć ContextThemeWrapper do napompowania inny. Użyj getLayoutInflater(), aby uzyskać inflator dla każdego kontekstu.

+0

, więc wydaje się, że to działa dobrze na Lollipop, ale kończy się niepowodzeniem na KitKat. Jakieś pomysły? – tokudu

+0

Nie można powiedzieć bez śledzenia stosu z logcat. Prawdopodobnie warto otworzyć nowe pytanie – Karakuri

+1

Błąd znajduje się w bibliotece pomocy technicznej: https://code.google.com/p/android/issues/detail?id=78289 To rozwiązanie nie działa. – Michael