Как точно установить высоту фрагмента диалога в андроиде?

Я хочу установить высоту фрагмента диалога в соответствии с количеством элементов в списке, которое находится внутри фрагмента диалога.

поэтому я беру высоту элемента lisitview, используя -

 qr_sheetview.getViewTreeObserver()
                .addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

                    @Override
                    public void onGlobalLayout() {
                        // TODO Auto-generated method stub
                        int w = qr_sheetview.getWidth();
                        int table_layout = qr_sheetview.getHeight();
                        Log.d("measure", "qr----layoutheight  -----> " + w + "-" + table_layout);
                        qr_sheetview.getViewTreeObserver()
                                .removeOnGlobalLayoutListener(this);
                    }
                });

поэтому я получил размер элемента ans, предположим, если элемент один в списке, тогда высота фрагмента диалога должна быть равна table_layout

но когда я устанавливаю высоту фрагмента, используя -

getDialog().getWindow().setLayout(RecyclerView.LayoutParams.WRAP_CONTENT, table_layout);

в onResume фрагмента диалога.

но я не получаю желаемую высоту. поэтому я регулирую высоту до тех пор, пока не получу идеальную высоту. Я запускаю это на нескольких устройствах и получаю разную высоту.

Для

metrics.densitydpi = 240
фактическая высота = 116 отрегулированная высота = 164

metrics.densitydpi = 320
фактическая высота = 151 отрегулированная высота = 183

metrics.densitydpi = 480
фактическая высота = 227 отрегулированная высота = 323

Я не знаю шаблона, стоящего за этим.

My fragment_layout -

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/mainlayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorbackground"
    android:orientation="vertical">

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fillViewport="true"
        android:scrollbars="none">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.RecyclerView
                android:id="@+id/my_recycler_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"

                />

            <RelativeLayout
                android:id="@+id/otherupilayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/my_recycler_view"
                android:background="@color/whitebackground">

                <View
                    android:layout_width="match_parent"
                    android:layout_height="0.5dp"
                    android:background="@color/colorDivider" />

                <RelativeLayout
                    android:id="@+id/choosebanklayout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="bottom"
                    android:layout_margin="10dp">

                    <ImageView
                        android:id="@+id/bankicon"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:layout_margin="10dp"
                        app:srcCompat="@drawable/kj_upi_other" />

                    <TextView
                        android:id="@+id/accountnumber"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:layout_marginLeft="10dp"
                        android:layout_toLeftOf="@+id/makeprimary"
                        android:layout_toRightOf="@+id/bankicon"
                        android:text="Use other UPI app"
                        android:textColor="#212121"
                        android:textSize="16sp" />


                    <CheckBox
                        android:id="@+id/otherupicb"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_centerVertical="true"
                        android:layout_toRightOf="@+id/primaryac"
                        android:button="@drawable/custom_checkbox"
                        android:checked="false" />

                </RelativeLayout>


            </RelativeLayout>


            <RelativeLayout
                android:id="@+id/errorlayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:visibility="gone">

                <TextView
                    android:id="@+id/message"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerInParent="true"
                    android:text="No Accounts Linked"
                    android:textColor="#212121"
                    android:textSize="18sp"

                    />

            </RelativeLayout>

        </RelativeLayout>

    </android.support.v4.widget.NestedScrollView>

</RelativeLayout>