J'ai une vue composée de TableLayout, TableRow and TextView
. Je veux qu'il ressemble à une grille. J'ai besoin d'obtenir la hauteur et la largeur de cette grille. Les méthodes getHeight()
et getWidth()
reviennent toujours 0. Cela se produit lorsque formater la grille dynamique et aussi lorsque j'utilise une version XML.
Comment récupérer les dimensions d'une vue?
Voici mon 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
getHeight()
et getWidth()
après que le cycle de vie de l'activité ait demandé aux vues de se mesurer, en d'autres termes, de faire ce genre de choses onResume()
et c'est tout. Vous ne devriez pas vous attendre à ce qu'un objet pas encore disposé connaisse ses dimensions, c'est tout le truc. Pas besoin de la magie suggérée ci-dessous.
getHeight()/Width()
à onResume()
ne pas céder> 0 valeur pour moi.