我正在尝试隐藏 Android 4.4 设备上的系统状态栏。这是针对信息亭模式的,其中我的应用程序将是设备上运行的唯一应用程序。目前的目标设备是 2013 款 Nexus 7。
该设备已获得 root 权限,并且我已经能够完全删除底部导航栏,其中包含一些信息这个帖子.
对于顶部状态栏,我所尝试的一切都只是暂时隐藏状态栏。如果我的用户在屏幕顶部向下移动,状态栏会重新出现。我不想让他们看到时间、进入设置甚至看到通知。
我发现并已经尝试过的帖子:
- 在平板电脑中隐藏系统栏
- 永久隐藏活动中的导航栏
- Android 上隐藏状态栏
- Android 中禁用/隐藏状态栏
有什么建议么?
理想情况下,我希望能够编辑 build.prop 来执行此操作,因为我已经为导航栏执行了此操作,并且可以同时执行此操作。我试图不必构建自己的 Android 映像。
Update:
经过更多工作后,这似乎在某种程度上取决于 Android 的确切构建或其运行的设备。
某些设备(例如我一直使用的 Nexus 系列)允许用户滑动以使栏重新出现。
然而,我最近在 Verizon Eclipse 上尝试过这个,并且该栏没有重新出现,这正是我正在寻找的。
我仍在寻找更好的解决方案来针对所有设备,但它可能会归结为创建我自己的 Android 版本。
我们无法阻止在 Kitkat 设备中以全屏模式显示状态,因此进行了一个仍符合要求的 hack,即阻止状态栏扩展。
为了实现这一点,该应用程序没有全屏显示。我们在状态栏上放置了一个覆盖层并消耗了所有输入事件。它阻止了地位的扩大。
note:
- customViewGroup 是自定义类,它扩展了任何
布局(框架、相对布局等)并消耗触摸事件。
- 消费触摸事件重写 onInterceptTouchEvent 方法
查看组并返回 true
Updated
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
自定义ViewGroup实现
Code :
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);
希望这对您有帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)