带全屏工具栏和软键盘的模式BottomSheetDialog

时间:2018-12-03 15:02:06

标签: android android-toolbar android-softkeyboard bottom-sheet

如何创建模式BottomSheetDialog(Fragment)并使用Material Design Spec中所示的工具栏切换到全屏模式?

enter image description here

可以通过添加BottomSheetBehavior.BottomSheetCallback并根据slideOffset设置工具栏的Alpha来手动添加工具栏。当移动底表时,这有点棘手,但似乎可以解决。但是,当我的底部工作表包含EditText并显示键盘时,此操作将无效。我尝试了两个版本:BottomSheetDialogFragment,然后将“行为”手动添加到新的片段中。

  • 有没有更简单的方法来实现这一目标?
  • 当显示键盘并且底部用完整个空间时,我可以触发工具栏吗?

1 个答案:

答案 0 :(得分:0)

我面临同样的问题。 这就是我解决的问题。 行为隐藏在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()
   }
}