Sto cercando un modo per ottenere la dimensione di una finestra di dialogo personalizzata. Ho risposto alla domanda this, ma l'unica risposta data è abbastanza inutile, perché se provo mDialog.getWindow().getAttributes().height;
restituisce solo -2, che è una costante per l'attributo WRAP_CONTENT
che ho impostato per la finestra di dialogo. Come posso ottenere la dimensione di esso. Voglio sapere il siye per l'immagine di sfondo.Come ottenere le dimensioni della finestra di dialogo?
risposta
In realtà, in Android non funziona come in iOS - non è possibile ottenere la dimensione del View
in sé, che cosa si può fare, però, è quello di chiedere per la dimensione del ROOT layout che vista.
es .:
myDialog.this.findViewById(R.id.dialog_root_layout).getHeight());
Anche se restituisce la dimensione della finestra di dialogo senza un'intestazione, è esattamente ciò di cui avevo bisogno. – slezadav
@Michal: ottengo che 'dialog_root_layout non può essere risolto o non è un campo' per un' AlertDialog'. –
@ LuisA.Florit Invece di inserire dialog_root_layout dovresti inserire l'ID della tua finestra di dialogo. – Michal
fare un tentativo:
mDialog.getWindow().getDecorView().getHeight()
Grandi opere davvero bene, la risposta di Michal è comunque migliore per il mio caso. – slezadav
@KorniltsevAnatoly: questo non funziona per me. Ottengo 0. –
@Override public void onWindowFocusChanged (boolean hasFocus) { super.onWindowFocusChanged (hasFocus); // chiama qui } –
@Kormilsev Anatoliy ha risposto corretta e io sono solo migliorare. Così nella classe si eredita dalla classe Dialog solo sovrascrivere il metodo:
@Override
public void onWindowFocusChanged (boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
hight = getWindow().getDecorView().getHeight();
}
e come impostare questo evento per AlertDialog ?? – user924
questo 'alertDialog.setOnShowListener (new DialogInterface.OnShowListener()' funzionerà – user924
Sì. Questa è una decisione per AlertDialogs maggiormente utilizzati. – CodeToLife
cosa finestra esattamente cosa si usa? –
public control ControlOverlay estende Dialog, quindi solo Dialog – slezadav