如何在安卓系统中隐藏状态栏

137
我参考了这个链接 link。如果用户点击EditText(例如“到:”),键盘将弹出,同时用户可以滚动查看屏幕上的所有其他视图(例如撰写、主题、发送按钮)。同样,在我的应用程序中,我有一个活动,在其中我拥有一些小部件或视图。 假设用户点击我的Activity中的EditText,则会弹出键盘,并且我可以滚动以查看其余视图。但是,如果我在清单中添加此属性android:theme="@android:style/Theme.NoTitleBar.Fullscreen",我无法滚动来查看其余视图。但是,如果我像这样在清单中添加属性android:theme="@android:style/Theme.NoTitleBar",那么我就可以滚动以查看其余视图,但该屏幕上会出现状态栏。我希望能够全屏并且即使弹出键盘也可以滚动查看其他视图...?我需要做哪些更改..?

3
请注意,在Android 3.0中,您无法隐藏状态栏,并且有很大可能您将来也无法隐藏状态栏。在Android 3.0中,状态栏包含后退和主页按钮,因此状态栏必须始终可用。 - CommonsWare
我刚刚成功地在3.0版本,API级别11的模拟器上隐藏了标题栏和状态栏。 - erdomester
全屏应该仍然允许,用户通常不想在玩全屏游戏时看到状态栏。 - Sam YC
@user448250 你最终找到答案了吗? - Bitcoin Cash - ADA enthusiast
活动是什么?它是您网站文件夹中的某个XML文件吗? - Nebular Dust
37个回答

0

如果您正在使用Compose,那么您可以导入

implementation "com.google.accompanist:accompanist-systemuicontroller:0.17.0"

然后在你的屏幕上写下:

val systemUiController = rememberSystemUiController()
systemUiController.isStatusBarVisible = false

0

用于Manifest

android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"

1
可能取决于主题。在我的情况下,出现了一个异常:“java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.” - CoolMind

0

我认为你是错的,请查看有关隐藏状态栏的官方信息 https://developer.android.com/training/system-ui/status.html - Jose Ricardo Citerio Alcala
Jose,我会检查给定链接上的信息,并在必要时更新答案。这个问题/答案是一年前添加的,当时针对这种情况还没有官方解决方案。也许在下一个版本中,Google/Android已经添加了相应的API /方法。如果他们提供了解决方案,那就太好了。谢谢! - Jyo the Whiff

0

如果您参考Google文档,您可以在Android 4.1及以上版本中使用此方法,在setContentView()之前调用此方法。

public void hideStatusBar() {
    View view = getWindow().getDecorView();
    int uiOption = View.SYSTEM_UI_FLAG_FULLSCREEN;
    view.setSystemUiVisibility(uiOption);
    ActionBar actionBar = getActionBar();
    if (actionBar != null) {
        actionBar.hide();
    }
}

0
100% 它会适用于隐藏和显示状态栏和导航栏。 直接调用这些方法来显示和隐藏状态栏和导航栏。
 private void hideSystemUI() {

    View decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
    decorView.setSystemUiVisibility(uiOptions);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

}

private void showSystemUI() {
    View decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
    decorView.setSystemUiVisibility(uiOptions);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

更多信息请参考Rajmeetamil


-1

在 res -> values -> styles.xml 文件中

style 标签内部粘贴

<item name="android:windowTranslucentStatus" tools:targetApi="kitkat">true</item>

它抛出错误 - org.xml.sax.SAXParseException; lineNumber: 6; columnNumber: 79; 与元素类型 "item" 相关联的属性 "tools:targetApi" 的前缀 "tools" 未绑定。 - Atul Raj

-1
requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

你好!考虑添加一些注释或口头说明你正在做什么。 - George

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接