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

Android Discussion :

getMeasuredWidth() renvoie 0px


Sujet :

Android

  1. #1
    Membre régulier
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 55
    Points : 83
    Points
    83
    Par défaut getMeasuredWidth() renvoie 0px
    Bonjour,

    J'ai un soucis avec une grosse appli, que j'ai résumé dans une plus petite ne faisant qu'illustrer ce cas.

    J'ai une HorizontalScrollView, dans laquelle j'ajoute une LinearLayout, dans laquelle j'ajoute une textView.

    Après l'ajout du tout, je fais un getMeasuredWidth sur la TextView, afin d'en connaître la largeur, mais cela me renvoie toujours 0.

    Ci dessous le code du main.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
     
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
     
        <HorizontalScrollView android:id="@+id/testHorizontal"
    	    android:layout_width="fill_parent"
    	    android:layout_height="65px">
     
    	</HorizontalScrollView>
     
    </LinearLayout>
    Et ci dessous, le code de mon activity :

    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
     
    package com.android.developpez.herfrayg.sizeview;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.ViewGroup.LayoutParams;
    import android.widget.HorizontalScrollView;
    import android.widget.LinearLayout;
    import android.widget.TextView;
     
    public class DeveloppeznetViewwidthActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            HorizontalScrollView horizontalScrollView = (HorizontalScrollView) findViewById(R.id.testHorizontal);
     
            LinearLayout container = new LinearLayout(this);
            container.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
     
            TextView test = new TextView(this);
            test.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            test.setText("Here is my test");
     
            container.addView(test);
            horizontalScrollView.addView(container);
     
            Log.e("Test", String.format("Largeur de la TextView : %d px", test.getMeasuredWidth()));
        }
    }
    Dans mon LogCat, le retour est :
    Largeur de la TextView : 0 px
    Avez-vous une origine du soucis ?

    Merci.

  2. #2
    Membre régulier
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 55
    Points : 83
    Points
    83
    Par défaut
    Apparemment, lors d'un add, il n'attends pas que la vue soit ajoutée effectivement pour passer à l'instruction suivante.

    Du coup, je me retrouve avec une getMeasuredWidth qui ne correspond à une vue non encore affichée, d'où le 0.

    Solution que j'ai trouvée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    		        final TextView text = (TextView);
    			text.setText("Toto");
    		        ViewTreeObserver observer = text.getViewTreeObserver();
    		        observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    					public void onGlobalLayout() {
    						Log.e("Test", String.format("Size de la textview : %d px", text.getMeasuredWidth()));
    					}
    		        });
    Bon, ça complexifie un peu le code, mais ça passe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème requête qui renvoie plusieurs
    Par dai.kaioh dans le forum Langage SQL
    Réponses: 6
    Dernier message: 01/04/2004, 10h07
  2. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13
  3. Réponses: 5
    Dernier message: 11/12/2003, 14h45
  4. Procédure stocké:Insert et renvoie de la clé primair
    Par caramel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/04/2003, 09h34
  5. jointure renvois pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/08/2002, 12h51

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