I have the following test bottom sheet implementation.
When I set the peekHeight to a value less than 500, it works. After some value, any increase in peek height will not change how the bottom sheet is expanded. It Just remains there to only drag manually. How do we set the peekHeight programmatically to ensure that the bottom sheet is auto expanded to the peek height.
bottom_sheet_dialog_main
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/locUXCoordinatorLayout" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/locUXView" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:orientation="vertical" app:behavior_hideable="false" app:behavior_peekHeight="0dp" app:layout_behavior="@string/bottom_sheet_behavior"> <TextView android:layout_width="match_parent" android:layout_height="100dp" android:text="1 Value" /> <TextView android:layout_width="match_parent" android:layout_height="100dp" android:text="2 Value" /> <TextView android:layout_width="match_parent" android:layout_height="100dp" android:text="3 Value" /> <TextView android:layout_width="match_parent" android:layout_height="100dp" android:text="4 Value" /> <TextView android:layout_width="match_parent" android:layout_height="100dp" android:text="5 Value" /> <TextView android:layout_width="match_parent" android:layout_height="100dp" android:text="6 Value" /> <TextView android:layout_width="match_parent" android:layout_height="100dp" android:text="7 Value" /> <TextView android:layout_width="match_parent" android:layout_height="100dp" android:text="8 Value" /> <TextView android:layout_width="match_parent" android:layout_height="100dp" android:text="9 Value" /> <TextView android:layout_width="match_parent" android:layout_height="100dp" android:text="First Value" /> </LinearLayout> </android.support.design.widget.CoordinatorLayout>
Java code
public class MyBottomSheetDialogFragment extends BottomSheetDialogFragment { private static BottomSheetBehavior bottomSheetBehavior; private static View bottomSheetInternal; private static MyBottomSheetDialogFragment INSTANCE; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { getDialog().setOnShowListener(new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialog) { BottomSheetDialog d = (BottomSheetDialog) dialog; CoordinatorLayout coordinatorLayout = (CoordinatorLayout)d.findViewById(R.id.locUXCoordinatorLayout); bottomSheetInternal = d.findViewById(R.id.locUXView); bottomSheetBehavior = BottomSheetBehavior.from(bottomSheetInternal); bottomSheetBehavior.setPeekHeight(bottomSheetInternal.getHeight()); bottomSheetInternal.requestLayout(); coordinatorLayout.getLayoutParams().height = bottomSheetInternal.getHeight(); Toast.makeText(getActivity(), "Height is" + bottomSheetInternal.getHeight() + " " + coordinatorLayout.getLayoutParams().height, Toast.LENGTH_LONG).show(); } }); INSTANCE = this; return inflater.inflate(R.layout.bottom_sheet_dialog_main, container, false); } }
Using this code in onCreateView.
getDialog().setOnShowListener(new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialog) { BottomSheetDialog d = (BottomSheetDialog) dialog; FrameLayout bottomSheet = (FrameLayout) d.findViewById(R.id.design_bottom_sheet); CoordinatorLayout coordinatorLayout = (CoordinatorLayout) bottomSheet.getParent(); BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet); bottomSheetBehavior.setPeekHeight(bottomSheet.getHeight()); coordinatorLayout.getParent().requestLayout(); } });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With