Android会在屏幕上显示对话框时查找

时间:2014-02-13 17:26:06

标签: android dialog

我需要找到dialog的某些元素的坐标 但是在屏幕上显示对话框之前,所有方法都返回0 如何找出屏幕上显示对话框的时间?

我的意思是在 dialog.show()之后,dialog.isShowing()返回true,但是

int width=mDialog.getWindow().getDecorView().getWidth();

返回0

3 个答案:

答案 0 :(得分:2)

如果您需要确定屏幕上显示对话框的时间,您是否可以尝试通过setOnShowListener监听onShow事件:

final AlertDialog alertDialog = alertDialogBuilder.create(); 
alertDialog.setOnShowListener(new OnShowListener() { 
    @Override 
    public void onShow(DialogInterface dialog) { 
        int width = alertDialog.getWindow().getDecorView().getWidth(); 
        Toast.makeText(getApplicationContext(), String.valueOf(width) Toast.LENGTH_LONG).show();             
    } 
});   
alertDialog.show();

答案 1 :(得分:0)

我自己没有这样做,但是在Android开发站点上挖掘它看起来你可能能够扩展DialogFragment类,然后通过覆盖onCreateView方法来获得所需的计算。还有一点工作,但这应该可以让您访问对话框的整个生命周期。

见这里:http://developer.android.com/reference/android/app/DialogFragment.html

答案 2 :(得分:0)

我仍然试着通过.getWidth().getHeight()来获取对话框的大小。我认为它只适用于不支持对话框的活动。

尝试此选项:

AlertDialog.Builder a = new AlertDialog.Builder(this);

View v = a.create().getCurrentFocus();
v.measure(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);

int height = v.getMeasuredHeight();
int width = v.getMeasuredWidth();

或此方法

  private int getDialogWidth(Dialog dialog) 
        { 
        DisplayMetrics dm = new DisplayMetrics();
        dialog.getWindow().getWindowManager().getDefaultDisplay().getMetrics(dm);
        String width = "" + dm.widthPixels ;
        return (Integer.parseInt(width));
  }