J'ai un AppBarLayout défini comme telthème Changement AppBarLayout programatically
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
Cependant, parfois je change le thème de l'application et je veux aussi changer, et ses enfants de. J'ai réussi partiellement en faisant ceci:
AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.appbar_layout);
appBarLayout.getContext().setTheme(R.style.AppTheme_Dark_AppBarOverlay);
appBarLayout.invalidate();
Cependant, le TextView pour le titre n'obtient pas les arrangements de thème.
Comment puis-je le définir?
C'est vrai, mais je le mets sur AppBarLayout, pas toute l'application. J'ai utilisé getContext() car il semble que le contexte pour AppBarLayout ne soit pas le même que le tout. Si j'ai besoin de reconstruire juste une partie de celui-ci (je peux l'obtenir avant les builds de vue, je suppose), comment puis-je faire cela – automaton
Vous devrez reconstruire le AppBarLayout au minimum. Vous pouvez utiliser un [ContextThemeWrapper] (http://developer.android.com/reference/android/view/ContextThemeWrapper.html) sur le contexte de base pour regonfler les vues avec un autre thème. De cette façon, votre contexte de base n'est pas affecté. – Krylez
N'y a-t-il pas d'autre moyen de configurer android: theme sur un AppBarLayout? Cela n'a aucun sens, pourquoi avoir des thèmes sur les widgets si vous ne pouvez pas les changer? – automaton