gpt4 book ai didi

android - 带有全屏工具栏和软键盘的模态 BottomSheetDialog

转载 作者:IT老高 更新时间:2023-10-28 23:36:35 32 4
gpt4 key购买 nike

如何创建一个模态的 BottomSheetDialog(Fragment),它使用工具栏切换到全屏,如 Material Design Spec 所示?

enter image description here

可以通过添加 BottomSheetBehavior.BottomSheetCallback 并根据 slideOffset 设置 ToolBar 的 alpha 来手动添加 ToolBar。这有点笨拙,但在移动 Bottom Sheet 时似乎有效。但是,当我的 Bottom Sheet 包含 EditText 并显示键盘时,这不起作用。我尝试了两个版本:BottomSheetDialogFragment 并手动将行为添加到新 fragment 。

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

最佳答案

我面临同样的问题。这就是我解决的问题。行为隐藏在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 步:让您的 fragment 扩展此自定义 fragment

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()
}
}

关于android - 带有全屏工具栏和软键盘的模态 BottomSheetDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53596389/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com