Ho una visione composta da TableLayout, TableRow and TextView
. Voglio che sembri una griglia. Ho bisogno di ottenere l'altezza e la larghezza di questa griglia. I metodi getHeight()
egetWidth()
restituiscono sempre 0. Questo accade quando formatto la griglia in modo dinamico e anche quando utilizzo una versione XML.
Come recuperare le dimensioni per una vista?
Ecco il mio programma di test che ho usato in Debug per verificare i risultati:
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()
e getWidth()
dopo che il ciclo di vita dell'Attività ha chiesto ai punti di vista di misurarsi, in altre parole, fare questo tipo di cose onResume()
e basta. Non dovresti aspettarti che un oggetto non ancora disposto conosca le sue dimensioni, questo è il trucco. Non c'è bisogno della magia suggerita di seguito.
getHeight()/Width()
a onResume()
non cedere> 0 il valore per me.