2012-11-22 22 views
10

Özel iletişim kutusunun boyutunu elde etmenin bir yolunu arıyorum. Ben this soru gitti, ama verilen tek cevap oldukça işe yaramıyor, çünkü mDialog.getWindow().getAttributes().height; deneyin, yalnızca iletişim kutusu için ayarladığım WRAP_CONTENT özniteliği için bir sabit olan -2 döndürür. Bunun boyutunu nasıl alabilirim. Arka plan görüntüsü için siye bilmek istiyorum.İletişim boyutu nasıl edinilir?

+0

tam olarak ne iletişim kullanıyorsunuz: Yani iletişim sınıfından miras sınıfta sadece yöntemini geçersiz? –

+0

public class ControlOverlay Dialog'u genişletir, bu nedenle sadece Dialog – slezadav

cevap

11

Aslında Android'de bu iOS gibi çalışmıyor - Eğer View kendisi boyutunu alamayan, ne yapabildiğini olsa da, bunun KÖK düzeni boyutu için istemektir görünüm.

ör .:

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

+1

İletişim kutusu boyutunu üstbilgi olmadan döndürse de, tam olarak ihtiyacım olan şey buydu. – slezadav

+0

@Michal: "AlertDialog" için dialog_root_layout çözümlenemiyor veya bir alan değil. –

+0

@ LuisA.Florit dialog_root_layout öğesini koymak yerine, diyaloğunuzun kimliğini eklemelisiniz. – Michal

16

Bir deneyin:

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

Harika çalışıyor, Michal'in cevabı benim durumumda daha iyi. – slezadav

+8

@KorniltsevAnatoly: Bu benim için çalışmıyor. 0 –

+0

@Override public void onWindowFocusChanged (boolean hasFocus) { super.onWindowFocusChanged (hasFocus); // çağrı burada } –

4

@Kormilsev Anatoliy doğru cevap vardır ve ben sadece geliştiriyorum.

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

ve bu olay AlertDialog için nasıl ayarlanır? – user924

+1

this 'alertDialog.setOnShowListener (yeni DialogInterface.OnShowListener()', – user924

+0

çalışacaktır Evet, bu çoğunlukla kullanılan AlertDialogs için bir karardır. – CodeToLife