213 votes

Comment récupérer les dimensions d'une vue ? getHeight() et getWidth() renvoient toujours zéro.

J'ai une vue composée de tablelayout, tablrows et textviews pour ressembler à une grille. J'ai besoin d'obtenir la hauteur et la largeur de cette grille. Les méthodes getheight() et getwidth() renvoient toujours 0. Cela se produit lorsque je formate la grille de manière dynamique ou que j'utilise une version xml.

Quelqu'un pourrait-il dire comment récupérer les dimensions d'une vue ?


Voici le programme de test que j'ai utilisé dans Debug pour vérifier les résultats :

import android.app.Activity;
import android.os.Bundle;
import android.widget.TableLayout;
import android.widget.TextView;

public class appwig extends Activity {  
    @Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.maindemo);  //<- includes the grid called "board"
      int vh = 0;   
      int vw = 0;

      //Test-1 used the xml layout (which is displayed on the screen):
      TableLayout tl = (TableLayout) findViewById(R.id.board);  
      tl = (TableLayout) findViewById(R.id.board);
      vh = tl.getHeight();     //<- getHeight returned 0, Why?  
      vw = tl.getWidth();     //<- getWidth returned 0, Why?   

      //Test-2 used a simple dynamically generated view:        
      TextView tv = new TextView(this);
      tv.setHeight(20);
      tv.setWidth(20);
      vh = tv.getHeight();    //<- getHeight returned 0, Why?       
      vw = tv.getWidth();    //<- getWidth returned 0, Why?

    } //eof method
} //eof class

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