132 votes

Définir le thème d'un fragment

J'essaie de définir le thème d'un fragment.

La définition du thème dans le manifeste ne fonctionne pas :

android:theme="@android:style/Theme.Holo.Light"

En regardant les blogs précédents, il semble que je doive utiliser un ContextThemeWrapper. Quelqu'un peut-il me renvoyer à un exemple codé ? Je ne trouve rien.

0voto

Jop Middelkamp Points 62

J'ai réussi à le faire fonctionner en définissant le thème sur le contexte du fragment avant d'appeler l'inflateur.

NOTE : Il s'agit d'un exemple pour Xamarin.Android en combinaison avec MvvmCross. Je ne suis pas sûr à 100% que cela fonctionne également pour les programmeurs Java. Mais vous pouvez essayer :)

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    Context.SetTheme(Theme);

    base.OnCreateView(inflater, container, savedInstanceState);

    var view = this.BindingInflate(FragmentLayoutId, container, false);

    // Doing some other stuff

    return view;
}

Le code de la méthode d'extension SetTheme

public static void SetTheme(this Context context, AppThemeStyle themeStyle)
{
    var themeStyleResId = themeStyle == AppThemeStyle.Dark ? Resource.Style.AppTheme : Resource.Style.AppTheme_Light;

    context.SetTheme(themeStyleResId);
}

J'espère que cela aidera certaines personnes, merci !

-1voto

Amjed Baig Points 81

Vous pouvez essayer ceci pour lollipop dans onAttach

final Window window = activity.getWindow() ; window.setStatusBarColor(myStatusBarColor)

et le remettre par défaut dans ondettach

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X