【问题标题】:Hide status bar or empty it permanently隐藏状态栏或永久清空
【发布时间】:2018-04-13 15:12:19
【问题描述】:

在我的应用中,不需要状态栏和导航栏。

我确实找到了隐藏状态/导航栏的解决方案,但您仍然可以将它们拉回来。 我正在考虑做两件事。一种是创建一个Thread 来检查状态栏是否正在打开,以便它可以立即隐藏。这对我来说似乎是一件非常狡猾的事情。

几年前我和一个参与过类似项目的人谈过,他说他们实现了他们没有隐藏状态栏但它完全是空的,当你试图把它拉下来时它大约有 1 毫米长并且完全没用。

我可能想试试这条路。

你们能给我举几个例子来说明如何: - 摆脱电池图标 - 摆脱时间 - 摆脱通知 ...等

所以基本上让它完全是空的?

【问题讨论】:

标签: android android-studio statusbar navigationbar


【解决方案1】:

如果我理解了,请告诉我,您需要将状态栏放入您的应用程序中,对吗?为什么不直接使用全屏活动?

以编程方式进行:

requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.main);

或者在 Android Manifest 中指定一个主题:

<activity android:name=".ActivityName"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>

【讨论】:

  • 如果我在全屏模式下正确理解它,您仍然可以擦除状态栏,这是必须防止的。平板电脑将供不会读写的人使用,他们的注意力必须集中在正在运行的应用程序上。
  • 这几乎是不可能的。检查这个问题以获得进一步的解释stackoverflow.com/questions/7457730/…
  • 感谢您的回答,如果您点击链接我的页面中的一些链接,您会看到可以使用 customViewGroup 实现。在“customViewGroup”之前,如果不root系统是不可能的。
【解决方案2】:

您似乎已经实现了IMMERSIVE_STICKY 标志,它允许通过在屏幕顶部自上而下滑动来调用状态栏。

要禁用状态下拉,请使用此方法。这是状态栏上的覆盖,并消耗了所有输入事件。它可以防止状态扩展。

Android 清单

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 

customViewGroup 实施

WindowManager manager = ((WindowManager) getApplicationContext()
            .getSystemService(Context.WINDOW_SERVICE));

WindowManager.LayoutParams localLayoutParams = new WindowManager.LayoutParams();
localLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
localLayoutParams.gravity = Gravity.TOP;
localLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|

            // this is to enable the notification to recieve touch events
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |

            // Draws over status bar
            WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;

    localLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
    localLayoutParams.height = (int) (50 * getResources()
            .getDisplayMetrics().scaledDensity);
    localLayoutParams.format = PixelFormat.TRANSPARENT;

    customViewGroup view = new customViewGroup(this);

    manager.addView(view, localLayoutParams);

【讨论】:

  • 感谢您的回答,我会在周末尝试一下。导航栏是否也有解决方案?
【解决方案3】:

由于我正在创建一台特殊用途的机器,并且我只需要 android 设备来做一件事,我最终使用以下 mod 创建了我自己的 AOSP 版本:

状态栏布局在这里:

frameworks/base/packages/SystemUI/res/layout/status_bar.xml

确实将高度更改为 0dp。

工作得很好,没有状态栏了。 感谢所有投反对票的人。

还可以通过使图标对 GONE 可见(再次为 AOSP 自定义构建解决方案)来“清空”状态栏...

【讨论】:

    【解决方案4】:

    我认为在我上面发帖的那几个人可能有点难以阅读和理解。我的很简短

    如果你想在这里隐藏你的状态栏和操作栏,我。希望对你有帮助:)

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    
    getSupportActionBar().hide();
    

    【讨论】:

      猜你喜欢
      • 2011-08-08
      • 2014-11-02
      • 1970-01-01
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      相关资源
      最近更新 更多