我正在探索Google的Sunflower示例Jetpack
应用(https://github.com/googlesamples/android-sunflower)。 NavGraph在具有单个Activity
和多个Fragment
的导航xml文件中定义。主Activity
布局有一个AppBar
,所有片段都共享。我想将另一个Fragment
添加到以全屏模式显示图像的NavGraph。 Android文档显示以下代码以启用全屏模式:
private fun hideSystemUI() {
window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_FULLSCREEN)
}
我在新的hideSystemUI
的{{1}}中呼叫Fragment
,但它不起作用。 onResume()
仍显示在Fragment
中设置的主要AppBar
和导航。我已经尝试过S.O的各种其他解决方案。线程,但大多数似乎基于我在Jetpack之前的应用程序中已经成功实现的标准MainActivity
模式。新布局包含一个Activity/Fragment
和一个FrameLayout
。我的新片段看起来像这样:
ImageView
是否可以为一个片段启用全屏模式?除了将新的class FullScreenFragment: Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
val binding = DataBindingUtil.inflate<FragmentFullscreenBinding>(
inflater, R.layout.fragment_fullscreen, container, false)
return binding.root
}
override fun onResume() {
super.onResume()
hideSystemUI()
}
private fun hideSystemUI() {
activity!!.window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_FULLSCREEN)
}
}
添加到NavGraph之外,我根本没有更改Google的代码,但是如有必要,我可以在此处发布其他代码。我认为这可能必须通过Fragment
进行管理,但是我不确定。预先感谢!
答案 0 :(得分:0)
该片段仍显示MainActivity中设置的主要AppBar和导航。
这些不是hideSystemUI()
试图控制的系统UI的一部分。如果要隐藏小部件,请更新visibility
属性(例如findViewById(R.id.appbar).visibility = View.GONE
)。