Модальный BottomSheetDialog с полноэкранной панелью инструментов и Softkeyboard - PullRequest
0 голосов
/ 03 декабря 2018

Как можно создать модальный BottomSheetDialog(Fragment), который переключается в полноэкранный режим с помощью панели инструментов, как показано в Спецификация дизайна материала ?

enter image description here

I может добавить панель инструментов вручную, добавив BottomSheetBehavior.BottomSheetCallback и установив альфа панели инструментов в зависимости от параметра slideOffset.Это немного глупо, но, кажется, работает, когда перемещаете Нижний лист.Однако это не работает, когда мой нижний лист содержит EditText и отображается клавиатура.Я пробовал обе версии: BottomSheetDialogFragment и вручную добавлял поведение к новому фрагменту.

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

1 Ответ

0 голосов
/ 10 июня 2019

У меня такая же проблема.Это то, что я решил.Поведение скрыто в BottomSheetDialog, который доступен для получения поведения. Если вы не хотите менять свой родительский макет на CooridateLayout, вы можете попробовать это.

ШАГ 1: настроить BottomSheetDialogFragment

open class CBottomSheetDialogFragment : BottomSheetDialogFragment() {
   //wanna get the bottomSheetDialog
   protected lateinit var dialog : BottomSheetDialog 
   override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
      dialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialog
      return dialog
   }

   //set the behavior here
   fun setFullScreen(){
      dialog.behavior.state = STATE_EXPANDED
   }
}

ШАГ 2: заставьте свой фрагмент расширить этот пользовательский фрагмент

class YourBottomSheetFragment : CBottomSheetDialogFragment(){

   //make sure invoke this method after view is built
   //such as after OnActivityCreated(savedInstanceState: Bundle?)
   override fun onStart() {
      super.onStart()
      setFullScreen()//initiated at onActivityCreated(), onStart()
   }
}
...