我想在我的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:theme =“ @ android:style / Theme.NoTitleBar.Fullscreen”
将此添加到您的活动清单中。
您不能永久隐藏它。也许考虑覆盖使用触摸事件。我用过这个:
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>
这显示了一个黑色的条,代替了原始条。您可以使其透明,或向其中添加更多小部件。您可能需要调整高度以适合您的需求。