Организация макетов внутри BottomSheetDialogFragment так, чтобы все представления соответствовали предполагаемому - PullRequest
0 голосов
/ 27 августа 2018

У меня есть BottomSheetDialogFragment, который имеет некоторое содержимое и синюю кнопку (TextView) внизу. Я хочу, чтобы он всегда был привязан к нижней части BottomSheetDialogFragment, но я не смог этого сделать. Большую часть времени он находится в нужном месте, но иногда кажется, что он немного ниже, как на скриншоте ниже. :

enter image description here

Как я могу убедиться, что синяя кнопка всегда привязана к нижней части BottomSheetDialogFragment, несмотря ни на что? Корневое представление - RelativeLayout, и когда я попытался установить android:layout_alignParentBottom="true", но это не сработало.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Итак, я нашел 2 возможных решения этой проблемы, поэтому я делюсь ими здесь.

Первое решение - развернуть BottomSheetDialogFragment на весь экран, ниже приведен пример того, как это делается:

View parent = (View) view.getParent();
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) (parent).getLayoutParams();
CoordinatorLayout.Behavior behavior = params.getBehavior();
BottomSheetBehavior bottomSheetBehavior = (BottomSheetBehavior) behavior;
bottomSheetBehavior.setPeekHeight(view.getMeasuredHeight());

Затем мы корректируем положение кнопки внутри макета нашего BottomSheetDialogFragment, например, если у нас есть RelativeLayout, мы можем установить android:layout_alignParentBottom="true". Это будет означать, что наша кнопка всегда будет выровнена в нижней части экрана, когда BottomSheetDialogFragment развернут (на весь экран).

Другим решением, которое, как я считаю, является ПРАВОЕ РЕШЕНИЕ , заключается в том, чтобы заключить все содержимое макета BottomSheetDialogFragment в ScrollView. Таким образом, если высота устройства недостаточна, контент, включая кнопку, будет размещен, но в любой момент может быть прокручен.

0 голосов
/ 27 августа 2018

Просто взломать

  • Поместите нижнюю кнопку в вашу деятельность / фрагмент (родитель Bottomsheet).
  • Сделать видимым, когда виден нижний лист.
  • Поместите высоту кнопки равным полем внизу листа. (чтобы не перекрываться кнопкой)
  • Сделать кнопку невидимой при закрытии нижнего листа.

Проблема решена. :)

...