即使从屏幕顶部滑动手指,也如何完全隐藏Kitkat和更高版本的设备中的状态栏?

问题描述 投票:1回答:2

我想在我的Android应用程序中隐藏状态栏。

我使用了以下内容:

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                      | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);

在Kitkat下工作正常。但是在升级到Kitkat后,当我们从屏幕顶部滑动手指时,状态栏再次以沉浸模式工作,因此再次出现。

我不希望这种行为。如果从屏幕顶部滑动手指,则状态栏不应出现。我该如何实现?

android android-custom-view
2个回答
0
投票

android:theme =“ @ android:style / Theme.NoTitleBar.Fullscreen”

将此添加到您的活动清单中。


0
投票

您不能永久隐藏它。也许考虑覆盖使用触摸事件。我用过这个:

onCreate()

    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 |
                    WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
                    WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
    localLayoutParams.flags = 0x80000000 | localLayoutParams.flags;
    localLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
    localLayoutParams.height = (int) (25 * getResources().getDisplayMetrics().scaledDensity);
    localLayoutParams.format = PixelFormat.TRANSPARENT;
    LayoutInflater inflater = getLayoutInflater();
    View overlay = inflater.inflate(R.layout.systembar_overlay, null);
    manager.addView(overlay, localLayoutParams);

systembar_overlay.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/ll">
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="25dp"
        android:background="#ff000000"
        android:minHeight="25dp"
        android:longClickable="false">
    </FrameLayout>
</LinearLayout>

这显示了一个黑色的条,代替了原始条。您可以使其透明,或向其中添加更多小部件。您可能需要调整高度以适合您的需求。

© www.soinside.com 2019 - 2024. All rights reserved.