仅在一个片段中隐藏状态栏并在其他片段中显示

Posted

技术标签:

【中文标题】仅在一个片段中隐藏状态栏并在其他片段中显示【英文标题】:Hide status bar in only one fragment and display it on the others 【发布时间】:2016-01-10 16:52:31 【问题描述】:

我的活动中有 3 个片段,我想通过隐藏状态栏使一个片段全屏显示。当我退出该片段时,状态栏应该重新出现。我该怎么做?

【问题讨论】:

【参考方案1】:

在您的父活动中定义一个函数总是更好的,该函数将具有隐藏状态栏的代码,并在您的目标片段中调用该函数将隐藏该片段的状态栏,并且当您在其停止方法中退出片段时您可以再次显示状态栏。

让这成为你在活动中的方法,

public void hideStatusBar()
    
     // your code depending upon what you have implemented
    

 public void showStatusBar()
        
         // your code depending upon what you have implemented
        

然后在片段简历上你可以像这样调用这个方法,

((ParentActivity)getActivity()).hideStatusBar();

如果要为其他片段再次显示它,您可以覆盖片段的 onStop,

((ParentActivity)getActivity()).showStatusBar();

【讨论】:

【参考方案2】:

访问https://developer.android.com/training/system-ui/status.html 和 https://developer.android.com/training/system-ui/visibility.html

清楚地解释了如何在不同的android版本中隐藏和显示状态栏。

【讨论】:

【参考方案3】:

如果您想以编程方式清除使用 setSystemUiVisibility() 设置的标志,您可以执行以下操作:

activity?.window?.decorView?.systemUiVisibility = 0

https://developer.android.com/training/system-ui/dim

【讨论】:

【参考方案4】:

Kotlin 版本的片段显示/隐藏状态栏

override fun onViewCreated(view: View, savedInstanceState: Bundle?) 
    super.onViewCreated(view, savedInstanceState)

    (activity as MainActivity).supportActionBar?.hide()

【讨论】:

以上是关于仅在一个片段中隐藏状态栏并在其他片段中显示的主要内容,如果未能解决你的问题,请参考以下文章

显示对话框片段时与状态栏重叠,仅在Android4.4中

在 Unity iOS 应用程序中隐藏/显示状态栏 [目标 C]

如何隐藏顶部导航栏并在菜单中仅显示底部

Android 全屏片段不显示导航和状态栏后面的元素

如何从登录页面隐藏标题和侧边栏并在登录后显示

隐藏/显示 PageViewController 中特定视图控制器的状态栏 [关闭]