BottomSheetDialogFragment выставленная высота

Кажется, что BottomSheetDialogFragment закодирован с якорем, где, если ваш макет фрагмента превышает 360dp по высоте onShow(), диалоговое окно заглянет на 360dp, и вам придется вручную перетаскивать лист вверх, чтобы показать весь ваш макет.

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

вы можете проверить поведение следующим образом

Activity.java

            MyDialog myDialog = new MyDialog();
            mtDialog.show(getChildFragmentManager(),"my_dialog_fragment");

MyDialog.java

public class MyDialog extends BottomSheetDialogFragment{
   public View onCreate(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                         @Nullable Bundle savedInstanceState){
      return inflater.inflate(R.layout.dialog, container, false);
   }
}

dialog.xml

<FrameLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="432dp"
    android:backgroud="@color/blue"/>

это в значительной степени код. Я пытался использовать setStyle и создать стиль BottomSheetDialog и все эти перестановки и нет. но при установке высоты на 360dp он полностью расширяется, но мне нужно больше площади.


person John    schedule 02.10.2018    source источник


Ответы (1)


ОП здесь, отвечая на вопрос.

public class MyDialogFragment extends BottomSheetDialogFragment {
    @Override
    public void setupDialog(Dialog dialog, int style) {
        View v = LayoutInflater.from(getActivity()).inflate(R.layout.dialog, null);
        dialog.setContentView(v);

        CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) ((View) v.getParent()).getLayoutParams();
        CoordinatorLayout.Behavior behavior = params.getBehavior();
        ((BottomSheetBehavior) behavior).setState(BottomSheetBehavior.STATE_EXPANDED);
}

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

Удачного кодирования :)

person John    schedule 02.10.2018