2012-11-22 108 views
10

我正在尋找一種獲取自定義對話框大小的方法。我經歷了this的問題,但唯一的答案是無用的,因爲如果我嘗試mDialog.getWindow().getAttributes().height;它只返回-2,這是我設置爲對話的WRAP_CONTENT屬性的常量。我怎樣才能得到它的大小。我想知道背景圖片的siye。如何獲得對話框大小?

+0

您使用的是什麼對話框? –

+0

公共類ControlOverlay擴展了Dialog,所以只需對話 – slezadav

回答

11

事實上,在Android中並不像在iOS的工作 - 你不能得到View本身的大小,你可以做什麼,不過,就是要求對ROOT佈局是大小視圖。

例如爲:

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

+1

儘管它返回沒有標題的對話框的大小,但它正是我所需要的。 – slezadav

+0

@Michal:我得到'dialog_root_layout無法解析或者不是'AlertDialog'的一個字段。 –

+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(新的DialogInterface.OnShowListener()'將起作用 – user924

+0

是的。這是一個對大多數使用的AlertDialogs的決定。 – CodeToLife