2012-11-22 5 views
10

私はカスタムダイアログのサイズを取得する方法を探しています。私はthis質問を行ったが、私が試してみたらmDialog.getWindow().getAttributes().height;だけ-2を返すので、与えられた唯一の答えはかなり役に立ちません。これは、ダイアログに設定したWRAP_CONTENT属性の定数です。どのように私はそれのサイズを得ることができます。私は背景イメージのためのsiyeを知りたい。ダイアログのサイズを取得するには?

+0

どのようなダイアログを正確に使用しますか? –

+0

public class ControlOverlayはDialogを拡張していますので、ダイアログボックス – slezadav

答えて

11

実際に、Androidの中で、それはiOSのと同じように動作しません - あなたは何ができるか、View自体のサイズを取得することはできません、しかし、それのROOTレイアウトの大きさを求めることですビュー。

例えば:

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

+1

ヘッダーなしでダイアログのサイズを返しますが、これはまさに私が必要としたものです。 – slezadav

+0

@Michal: 'AlertDialog'の' dialog_root_layoutは解決できないか、フィールドではありません。 ' –

+0

@ LuisA.Florit dialog_root_layoutを入れる代わりに、ダイアログのIDを挿入する必要があります。 – Michal

16

それを試してみる:

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

偉大な作品は本当にうまく、ミハエルの答えは私の場合の方が良いです。 – slezadav

+8

@KorniltsevAnatoly:これは私のためには機能しません。私は0を取得します。 –

+0

@Override public void onWindowFocusChanged(boolean hasFocus){ super.onWindowFocusChanged(hasFocus); //ここをクリック } –

4

@Kormilsevアナトリーが正しい答えたと私はちょうど改善しています。 Dialogクラスから継承したクラスでは、メソッドをオーバーライドするだけです。

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

とこのイベントをAlertDialogに設定する方法は? – user924

+1

この 'alertDialog.setOnShowListener(new DialogInterface.OnShowListener()'は動作します – user924

+0

はい、これは主にAlertDialogsのための決定です。 – CodeToLife

関連する問題