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.