How to get dialog size?

前端 未结 4 633
情书的邮戳
情书的邮戳 2020-12-20 12:58

I am looking for a way to get size of a custom dialog. I went through this question, but the only answer given is pretty useless, because if I try mDialog.getWindow().

相关标签:
4条回答
  • 2020-12-20 13:24

    Give it a try:

    mDialog.getWindow().getDecorView().getHeight() 
    
    0 讨论(0)
  • 2020-12-20 13:31

    @Kormilsev Anatoliy has answered correct and I am just improving. So in the class you inherit from Dialog class just override the method:

    @Override
    public void onWindowFocusChanged (boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        height = getWindow().getDecorView().getHeight();
    }
    
    0 讨论(0)
  • 2020-12-20 13:32

    Actually, in Android it doesn't work like in iOS - you can't get the size of the View itself, what you can do, though, is to ask for the size of the ROOT layout of that view.

    e.g.:

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

    0 讨论(0)
  • 2020-12-20 13:42

    In case, if you have your own XML layouts for custom dialog.

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/dialog_main_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:background="@color/primaryBackground">
    
        /* whatever you want here */
    
    </android.support.constraint.ConstraintLayout>
    

    In activity:

        final Dialog dialog = new Dialog(this);
        dialog.setContentView(R.layout.popup_gameover);
    
        dialog.setOnShowListener(new DialogInterface.OnShowListener() {
            @Override
            public void onShow(DialogInterface d) {
                View view = dialog.findViewById(R.id.dialog_main_layout);
                int width = view.getWidth();
                int height = view.getHeight();
    
                ...
            }
        });
    

    This width and height exacly as expected.

    0 讨论(0)
提交回复
热议问题