Mi chiedo come misurare le dimensioni di una vista. Nel mio caso è aan Absolute Layout. Ho letto le risposte relative a queste domande, ma continuo a non capirlo. Sono abbastanza nuovo alla programmazione quindi forse sono solo io. ;)Come ottenere la larghezza/altezza di un layout in Android
Questo è il mio codice:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AbsoluteLayout layoutbase = (AbsoluteLayout) findViewById(R.id.layoutbase);
drawOval();
}
public void drawOval(){ //, int screenWidth, int screenHeight){
AbsoluteLayout layoutbase = (AbsoluteLayout) findViewById(R.id.layoutbase);
int screenWidth = layoutbase.getWidth();
int screenHeight = layoutbase.getHeight();
Log.i("MyActivity", "screenWidth: " + screenWidth + ", screenHeight: " +screenHeight);
Coordinates c = new Coordinates(BUTTONSIZE,screenWidth,screenHeight);
...some code ...
((ViewGroup) layoutbase).addView(mybutton, new AbsoluteLayout.LayoutParams(BUTTONSIZE, BUTTONSIZE, c.mX, c.mY));
mybutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showText(mybutton);
}
});
}
public void showText(View button){
int x = findViewById(LAYOUT).getWidth();
int y = findViewById(LAYOUT).getHeight();
Toast message = Toast.makeText(this, "x: " + x , Toast.LENGTH_SHORT);
message.show();
}
Il comando getWidth()
grandi opere in showText()
ma lo fa non in drawOval()
. So che sembra un po 'diverso, ma ho anche utilizzato la versione int x = findViewById(LAYOUT).getWidth();
in drawOval()
e x/y sono sempre 0
. Non capisco davvero perché non sembra esserci larghezza/altezza in quel punto precedente. Anche se effettivamente disegno un pulsante nel layout assoluto, getWidth()
restituisce 0
. Ovviamente voglio misurare le dimensioni in drawOval()
.
Apprezzerei qualsiasi aiuto.
Grazie!
noti che 'AbsoluteLayout' è deprecato e non dovrebbe mai essere utilizzato. usa invece un layout indipendente dalla densità! –
ciao, grazie. ma posso posizionare gli elementi assolutamente in qualsiasi altro tipo di Layout? – mayhem
No, ma progettare qualcosa in modo assolutamente essenziale significa che si sta progettando per una dimensione/densità dello schermo. Dovresti essere in grado di ottenere il risultato desiderato usando qualcosa come LinearLayout (per esempio) e valori unitari indipendenti dalla densità ("dp" o "sp" invece di "px"). –