如何解决在 Kotlin 中显示对话框时如何隐藏片段中的底部导航栏?
当显示对话框时,我很难隐藏底部导航栏。我希望它不会出现,因为应用程序以全屏模式显示。
这是构建对话框的类:
class CreateNewFolderDialogFragment : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return activity?.let {
// Use the Builder class for convenient dialog construction
//val builder = AlertDialog.Builder(it,R.style.AppBaseTheme)
val builder = AlertDialog.Builder(it)
val inflater = requireActivity().layoutInflater;
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder.setView(inflater.inflate(R.layout.create_new_folder_dialog,null))
// Add action buttons
.setPositiveButton("OK",DialogInterface.OnClickListener { dialog,id ->
// create folder ...
})
.setNegativeButton("Cancel",id ->
getDialog()?.cancel()
})
builder.create()
} ?: throw IllegalStateException("Activity cannot be null")
}
}
这是它在另一个片段中的调用:
fun createNewFolderDialog() {
val supportFragmentManager: FragmentManager = (activity as AppCompatActivity).supportFragmentManager
val newFragment = CreateNewFolderDialogFragment()
newFragment.show(supportFragmentManager,"newfolder")
}
这是我显示对话框时得到的屏幕截图。如您所见,显示了底部导航栏。我想永远阻止它出现。
解决方法
您可以通过以下代码隐藏系统导航栏:
window.decorView.apply {
// Hides the navigation bar.
systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
}
隐藏系统导航栏的限制很少,您可以在下面的链接中查看。 来源 - Android Documentation
您可以使用 window
类的 DialogFragment
对象,并且可以在 CreateNewFolderDialogFragment
类中的 onStart
类中设置上述标志,如下面的代码:
override fun onStart() {
super.onStart()
dialog?.window?.decorView?.apply {
// Hide both the navigation bar
systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
}
}
,
我解决了这个问题:
override fun onStart() {
super.onStart()
dialog?.window?.decorView?.apply {
systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE or
View.SYSTEM_UI_FLAG_FULLSCREEN or
View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
SYSTEM_UI_FLAG_HIDE_NAVIGATION
}
}
感谢@Nikhil 提供的提示!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。