Я работаю над BottomSheetDialogFragment
мое требование - создать меню Bottom, где, если я BottomSheetDialogFragment
за пределами области фрагмента, это не должно отменять диалог и должно сохраняться.
ПРОБЛЕМА: И Событие за пределами Фрагмента должно распространяться на нижний фрагмент/вид фрагмента.
Я уже пробовал ниже (не работает для BottomDialogFragment): разрешить внешнее касание для DialogFragment
Чтобы остановить диалоговое окно отмены, я попытался ниже (я вызываю setCancelable(boolean)
в onStart()
BottomDialogFragment):
@Override
public void setCancelable(boolean cancelable) {
super.setCancelable(cancelable);
BottomSheetDialog dialog = (BottomSheetDialog) getDialog();
dialog.setCanceledOnTouchOutside(cancelable);
View bottomSheetView = dialog.getWindow().getDecorView().findViewById(R.id.design_bottom_sheet);
BottomSheetBehavior.from(bottomSheetView).setHideable(cancelable);
}
Попробуйте код ниже в вашем BottomSheetDialog
:
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return (super.onCreateDialog(savedInstanceState) as BottomSheetDialog).apply {
setCanceledOnTouchOutside(false)
}
}
или оберните <CoordinatorLayout>
например, вашим <ConstraintLayout>
и реализуйте <layout/>
и присоедините к BottomSheetBehavior
.
Это невозможно, пока вы не используете BottomSheetDialogFragment
. BottomSheetDialogFragment
является диалоговым окном и, как поведение каждого диалогового окна, не допускает перехвата пользователем ни в одном представлении за диалоговым окном, хотя это видно пользователю.
Поэтому для достижения этого вам нужно использовать Fragment
вместо BottomSheetDialogFragment
. И да, это потребует большого количества изменений кода :) и вам придется жить без BottomSheetDialogFragment
если вы хотите перехватывать представления позади.
Adjust resize
но в соответствии с требованием нижнее меню должно перемещаться вверх, если отображается клавиатура (Пример) .BottomSheetDialog сам по себе интеллектуален для настройки в соответствии с вызовом изменения размера системы. не в состоянии реализовать то же поведение в MyCustomFragment. Так что я склонен использовать BottomSheetDialogFragment
попробуй это
setCanceledOnTouchOutside(false);
BottomSheetBehavior
<layout />
и присоедините кBottomSheetBehavior
, все будет работать нормально.