本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点
在 Android 中,使用 DialogFragment
显示对话框时,如果您希望隐藏系统导航栏(如状态栏和导航键),可以通过设置相关的系统 UI 标志来实现。这需要在 DialogFragment
的视图创建和显示过程中配置窗口属性。
以下是一个完整的例子,展示了如何在 DialogFragment
中隐藏系统导航栏(使用 Kotlin):
import android.os.Bundle
import android.view.View
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
class MyDialogFragment : DialogFragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_my_dialog, container, false)
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
dialog?.window?.decorView?.systemUiVisibility = (
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
or View.SYSTEM_UI_FLAG_FULLSCREEN)
}
override fun onStart() {
super.onStart()
dialog?.window?.setLayout(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
)
}
}
在这个示例中:
- onCreateView: 从 XML 中膨胀
DialogFragment
布局。 - onViewCreated: 在视图创建后设置系统 UI 可见性标志,隐藏导航栏和状态栏。
- onStart: 设置对话框窗口的布局参数,使其覆盖整个屏幕。
XML 布局文件
确保你有一个对应的布局文件,例如 res/layout/fragment_my_dialog.xml
:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Your layout content goes here -->
</FrameLayout>
使用 DialogFragment
要显示这个 DialogFragment
,可以在活动或其他片段中调用以下代码:
val dialogFragment = MyDialogFragment()
dialogFragment.show(supportFragmentManager, "MyDialogFragmentTag")
小结
通过在 DialogFragment
的 onViewCreated
方法中设置系统 UI 的可见性标志,可以实现隐藏系统导航栏的效果。这种方法允许您的 DialogFragment
在显示时全屏,并隐藏状态栏和导航栏。
欢迎关注我的公众号AntDream查看更多精彩文章!