Changer de theme de façon dynamique

Résolu/Fermé
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 - Modifié le 14 nov. 2020 à 21:29
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 - 21 nov. 2020 à 21:33
Bonjour à tous, je souhaiterais savoir si il existe un moyen de changer de thème dynamiquement, en fonction du choix de l'utilisateur, un peu comme ceci par exemple:

monLayout.setTheme(R.style.monTheme)



Merci à vous
Configuration: Linux / Firefox 82.0
A voir également:

6 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
16 nov. 2020 à 09:53
Bonjour,

Bien sûr, c'est possible de le faire, la doc

public void onCreate(Bundle savedInstanceState) {
    setTheme(android.R.style.Theme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

0
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 2
Modifié le 16 nov. 2020 à 21:23
merci brunoCS je connaissais cette possibilité, mais comment faire si ma vue contient plusieurs layout comme ceci par exemple:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/layout1"
        android:theme="@style/fondBleu">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv1"/>

    </RelativeLayout>

   <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/layout2"
        android:theme="@style/fondBleu">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv2"/>

    </RelativeLayout>

     <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/layout3"
        android:theme="@style/fondBleu">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv3"/>

    </RelativeLayout>
</linearLayout>


et que je ne veuille changer le style que d'un seul layout en fonction du choix de l'utilisateur?
j'avais penser à créer un Intent pour sauvegarder le chois de l'utilisateur, puis de redémarrer l'activité ensuite en récupérant ces choix. Mais je ne pense vraiment pas que ce soit la meilleur façon de faire.
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
17 nov. 2020 à 09:30
Un thème s'utilise sur l'app ou sur une Activity en globalité. Ce que tu veux, c'est changer le style d'une partie de l'écran ? Tu vas être obligé de recharger l'écran car le style s'applique au constructeur du composant graphique

TextView(this, null, 0, R.style.style)


j'avais penser à créer un Intent pour sauvegarder le chois de l'utilisateur, puis de redémarrer l'activité ensuite en récupérant ces choix. Mais je ne pense vraiment pas que ce soit la meilleur façon de faire.
Si, ça me parait bien. Sinon, l'autre solution est de supprimer toutes les vues et de les recréer une par une...
0
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 2
18 nov. 2020 à 06:52
Merci Bruno pour ces explications. Une dernière ptite question pour la route,
j'ai créer une ListView qui est générée à partir d'un class qui dérive de BaseAdapter

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/monRelativeLayout"
        android:theme="@style/fondBleu">
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/monBouton"/>
    
    </RelativeLayout>
    
    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listeTheme"/>
    
</LinearLayout>


est -il possible d'appliquer un style différent pour chaque RelativeLayout?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
Modifié le 18 nov. 2020 à 09:08
Désolé, je ne fais pas le lien entre ta
ListView
et tes
RelativeLayout
mais oui, (quasiment) tout est possible ;)

0
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 2
21 nov. 2020 à 21:33
Ok je vais creuser un peu. Merci Bruno pour ces éclaircissements.
0