BottomSheetDialogFragment выставленная высота - PullRequest
0 голосов
/ 02 октября 2018

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

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

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

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 - это место, где она полностью расширяется, но мне нужно больше области.

1 Ответ

0 голосов
/ 02 октября 2018

OP здесь, отвечая на Q.

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 или здесь, в диалоговом окне настройки ... посмотрим.

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

...