2012-11-22 5 views
10

Ich suche nach einer Möglichkeit, die Größe eines benutzerdefinierten Dialogfelds zu erhalten. Ich ging durch this Frage, aber die einzige Antwort gegeben ist ziemlich nutzlos, denn wenn ich versuche, mDialog.getWindow().getAttributes().height; gibt es nur -2, die eine Konstante für WRAP_CONTENT Attribut ist, die ich auf Dialog eingestellt. Wie kann ich die Größe davon bekommen? Ich möchte das siye für das Hintergrundbild wissen.Wie bekomme ich die Dialoggröße?

+0

was Dialog genau verwenden Sie? –

+0

öffentliche Klasse ControlOverlay erweitert Dialog, so nur Dialog – slezadav

Antwort

11

Eigentlich in Android es nicht wie in iOS funktioniert - Sie können nicht die Größe des View bekommen kann sich, was Sie tun können, aber ist für die Größe des ROOT Layout, das fragen Aussicht.

z.B .:

myDialog.this.findViewById(R.id.dialog_root_layout).getHeight());

+1

Obwohl es die Größe des Dialogs ohne eine Überschrift zurückgibt, ist es genau das, was ich brauchte. – slezadav

+0

@Michal: Ich bekomme 'dialog_root_layout kann nicht aufgelöst werden oder ist kein Feld' für einen' AlertDialog'. –

+0

@ LuisA.Florit Anstelle von dialog_root_layout sollten Sie die ID Ihres Dialogs eingeben. – Michal

16

es versuchen:

mDialog.getWindow().getDecorView().getHeight() 
+1

Super funktioniert wirklich gut, Michals Antwort ist besser für meinen Fall. – slezadav

+8

@KorniltsevAnatoly: Das funktioniert nicht für mich. Ich bekomme 0. –

+0

@Override public void onWindowFocusChanged (boolescher hasFocus) { super.onWindowFocusChanged (hasFocus); // rufen Sie hier } –

4

@Kormilsev Anatoliy hat geantwortet richtig und ich bin zu verbessern gerade. So in der Klasse, die Sie von Dialog-Klasse erben nur die Methode außer Kraft setzen:

@Override 
public void onWindowFocusChanged (boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    hight = getWindow().getDecorView().getHeight(); 
} 
+0

und wie dieses Ereignis für AlertDialog festlegen? – user924

+1

Dieser 'alertDialog.setOnShowListener (neue DialogInterface.OnShowListener()' funktioniert – user924

+0

Ja. Dies ist eine Entscheidung für die am häufigsten verwendeten AlertDialogs. – CodeToLife