我正在探索谷歌的向日葵样本Jetpack
应用程序(https://github.com/googlesamples/android-sunflower)。 NavGraph在导航xml文件中定义,该文件具有单个Activity
和众多Fragment
s。主要的Activity
布局有一个AppBar
,由所有碎片共享。我想在NavGraph中添加另一个Fragment
,以全屏模式显示图像。 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
的Fragment
中称onResume()
,但它无效。 Fragment
仍然显示在AppBar
设置的主要MainActivity
和导航。我尝试过S.O.的各种其他解决方案。线程,但大多数似乎是基于我在我的预Jetpack应用程序中取得成功的标准Activity/Fragment
模式。新布局包含FrameLayout
和ImageView
。我的新Fragment看起来像这样:
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)
}
}
有没有办法为一个片段启用全屏模式?我没有更改Google的代码,除了将新的Fragment
添加到NavGraph,但我可以在必要时在此处发布其他代码。我想这可能需要通过MainActivity
来管理,但我不确定。提前致谢!
片段仍然显示在MainActivity中设置的主AppBar和导航。
这些不是系统UI的一部分,这是hideSystemUI()
试图控制的。如果要隐藏小部件,请更新visibility
属性(例如,findViewById(R.id.appbar).visibility = View.GONE
)。