Я хочу установить высоту фрагмента диалога в соответствии с количеством элементов в списке, которое находится внутри фрагмента диалога.
поэтому я беру высоту элемента 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>