2014-10-24 6 views
5

Ich möchte zwei verschiedene android.support.v7.widget.Toolbars in meiner App haben, ein dunkles, ein Licht, und bei Bedarf zwischen ihnen wechseln. Wenn ich jedoch ein anderes Thema auf der zweiten Symbolleiste einstelle, scheint es auch das Thema auf der ersten Symbolleiste zurückzusetzen.Hinzufügen von zwei AppCompat-Symbolleisten mit verschiedenen Designs

Ist das ein Fehler oder beabsichtigtes Verhalten?

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"/> 

Antwort

0

Sie einen ContextThemeWrapper:

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

Verwenden Sie den aktuellen Kontext eine Symbolleiste aufzublasen und die ContextThemeWrapper verwenden die aufzublasen andere. Verwenden Sie getLayoutInflater(), um den Inflater für jeden Kontext zu erhalten.

+0

so scheint dies auf Lollipop gut zu funktionieren, aber auf Kitkat schlägt fehl. Irgendwelche Ideen? – tokudu

+0

Ich kann es nicht ohne eine Stack-Ablaufverfolgung von Logcat sagen. Wahrscheinlich lohnt sich eine neue Frage zu öffnen – Karakuri

+1

Der Fehler ist in der Support-Bibliothek: https://code.google.com/p/android/issues/detail?id=78289 Und diese Lösung funktioniert nicht. – Michael