IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Changer style d'un TextView en fonction de son contenu


Sujet :

Composants graphiques Android

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Points : 58
    Points
    58
    Par défaut Changer style d'un TextView en fonction de son contenu
    Bonjour à tous,

    J'aimerais faire en sorte que le style d'un TextView qui est lui meme dans une ListView puisse changer de style en fonction de son contenu (le contenu peut etre " " (un espace) ou du texte.

    Le code XML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
    	xmlns:android="http://schemas.android.com/apk/res/android"
    	android:orientation="horizontal"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content">
     
    	<TableLayout
    		android:id="@+id/blocCheck" 
    		android:layout_marginTop="15px"
    		android:layout_marginBottom="15px"
    		android:layout_marginRight="15px"
    		android:layout_marginLeft="15px"
    		android:layout_height="wrap_content"
    		android:layout_width="fill_parent" >
     
    		<TableRow
    			android:layout_width="fill_parent"
    			android:layout_height="wrap_content">
     
    			<LinearLayout
    				android:orientation="horizontal"
    				android:layout_width="fill_parent"
    				android:layout_height="wrap_content"
    				android:layout_weight="1"
    				android:layout_gravity="center_vertical">
     
    				<TextView
    					android:id="@+id/date_bar"
    					android:gravity="center_vertical"
    					android:layout_width="wrap_content"
    					android:layout_height="wrap_content"
    					android:textSize="20sp"
    					android:textStyle="bold"
    					android:layout_gravity="left" />
     
    			</LinearLayout>
    		</TableRow>
    BlaBla...
    Le code Java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    while(!cursor.isAfterLast()){
     
    			map = new HashMap<String, String>();
    			map.put("id",Integer.toString(cursor.getInt(0)));
     
    			if(cursor.getString(9).compareTo(dateAffichage)!=0){
     
    				String textBarreDate="";
     
    				if(cursor.getString(9).compareTo(getTodayFormattedDate())==0){
    					textBarreDate="Aujourd'hui\n"+getTodayFormattedDate();
     
    				}else if(cursor.getString(9).compareTo(getTomorrowFormattedDate())==0){
    					textBarreDate="Demain\n"+getTomorrowFormattedDate();
     
    				}else{
    					textBarreDate=cursor.getString(9);
     
    				}
     
    				map.put("date_bar",textBarreDate);
    			}else{
    				map.put("date_bar","");
    			}
    			listItem.add(map);
     
    			cursor.moveToNext();
    		}
     
    		SimpleAdapter mSchedule = new SimpleAdapter (this.getBaseContext(),listItem,R.layout.activity_main_list,new String[] {"date_bar", "type", "chaine", "code", "nom"},new int[] {R.id.date_bar, R.id.type,R.id.chaine,R.id.code,R.id.nom });
     
    		listeViewGeneral.setAdapter(mSchedule);
    Alors à moins qu'on puisse glisser des formules conditionnelles dans le XML...

    Ma question : comment et à quel moment je peux lui dire que je veux qu'il mette le TextView dans un autre style (sans que cela s'applique à tous les TextView qui portent le même id) ?

    Merci par avance

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Salut,

    On ne peux pas changer dynamiquement le style des Views sous Android après sa création par contre avant oui.

    Le seul moyen que tu as, serait de changer l'apparence de ta vue lors de sa création de la vue. Soit par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);

    Si c'est le style alors tu ne pourras le modifier que dans le constructeur de ta vue, ou là au lieu de te fier au fichier xml tu pourras lui donner le bon style dynamiquement mais que lors de sa construction après tu ne pourras plus y toucher.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Points : 58
    Points
    58
    Par défaut
    Salut,

    Merci pour ta réponse.

    Si je fais comme tu dis, tous mes TextView qui sont dans ma ListView auront alors le même style non ? Moi ce que je veux c'est que le TextView adopte un style particulier seulement au cas ou sa valeur soit particulière.

    Je me suis orienté vers une autre méthode : au lieu de mettre mon TextView directement dans mon SimpleAdapter, je passe par un autre SimpleAdapter. Ce SimpleAdapter, je le déclenche dans ma condition donc pas de problème de style.

    Ca ne fonctionne pas encore mais j'ai bon espoir... Au passage quelqu'un sait s'il y a une contre-indication à utiliser 2 SimpleAdapter différents dans un même ListView ?

    Quand je commente .setAdapter, l'autre apparaît bien dans ma vue et réciproquement mais les 2 ensemble non...

    Merci d'avance

  4. #4
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Crées un adapteur custom (sous-classe de BaseAdapter) et agit sur la méthode getView en fonction de la situation. Dans l'idée :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    public class MonSuperAdapter extends BaseAdapter
    {
    private ArrayList<HashMap<String, String>> data;  //pas beau, mais on va s'en contenter ici
    private LayoutInflater inflater=null;
     
    public MonSuperAdapter (ArrayList data)
    {
    this.data=data;        
        inflater =(LayoutInflater)baseActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
     
    public int getCount() 
    {
     return data.size();
    }
     
     
    @override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
    View vi=convertView;
        if(convertView==null)
     
           //construction de la vue selon une condition
           if (condition1) {
                  vi = inflater.inflate(R.layout.item_rouge, null);
           } else {
                  vi = inflater.inflate(R.layout.item_violet, null);
           }
     
          ....
     
        return vi;
    }
     
    }

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/03/2008, 10h30
  2. Mise en forme d'une cellule en fonction de son contenu
    Par Iloon dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/01/2008, 10h42
  3. redimensionnement dynamique de frame en fonction de son contenu
    Par kowal_2205 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/08/2007, 15h37
  4. [HTML/CSS] Taille d'un <div> en fonction de son contenu
    Par hedgehog dans le forum Mise en page CSS
    Réponses: 12
    Dernier message: 14/12/2006, 18h57
  5. Comment redimensionner un TEdit en fonction de son contenu ?
    Par Tempotpo dans le forum Composants VCL
    Réponses: 10
    Dernier message: 25/07/2005, 21h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo