[android] how to hide system bar and navigation bar in android

原创 2016年08月30日 10:27:59

several ways I found, the sixth is a brief way to make it:

1/

secly.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

secly is my layout , setcontent,  second activity is ok, but in main activity does not work;


2/

There is a solution starting with KitKat (4.4.2), called Immersive Mode:https://developer.android.com/training/system-ui/immersive.html

Basically, you should add this code to your onResume() method:

View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                              | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                              | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                              | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                              | View.SYSTEM_UI_FLAG_FULLSCREEN
                              | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
I've tested this

        getWindow().getDecorView().setSystemUiVisibility(
//                        View.SYSTEM_UI_FLAG_FULLSCREEN
                                 View.SYSTEM_UI_FLAG_IMMERSIVE
                                 |View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        );

hide navigation --> appear after a click

immersive --> not after click, but apeear after back to this activity.

immersive&hide navigation --> not appear after click   neither when back 



3/waiting for update

getWindow().getDecorView().//setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
        | View.SYSTEM_UI_FLAG_FULLSCREEN
        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

it works  learn from fullscreen activity.



5/ it works after reboot.

private void hideNavigationBar(){
    try {
        Process process = Runtime.getRuntime().exec("su");
        DataOutputStream os = new DataOutputStream(process.getOutputStream());
        os.writeBytes("pm enable com.android.systemui\n");
        os.flush();
        os.writeBytes("exit\n");
        os.flush();
        process.waitFor();
        //////////////////////////////////////
    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

if need to enable, just change "pm disable com.android.systemui\n")to enable.

&reboot

remember to reboot to make it  take effort


6/ it works well 

To Hide:

Runtime.getRuntime().exec("service call activity 42 s16 com.android.systemui");

Or use 79 instead of 42 for API less than 14. You may also need to include the SET_DEBUG_APP permission, in which case you need to have the application signed with the system key or installed in the /system/app/ directory.

To Show:

Runtime.getRuntime().exec("am startservice --user 0 -n com.android.systemui/.SystemUIService");

and also you can type these command in command line, after type in "adb shell" and enter.


waiting for update

found an article seems helpful:

NavigationBar的增删、去掉标题栏、全屏、键盘的显示隐藏及类型
http://bbs.16rd.com/forum.php?mod=viewthread&tid=16490
(出处: 一牛网)



Android中显示,隐藏Status Bar和Navigation Bar,沉浸式体验

Android中显示,隐藏Status Bar和Navigation Bar,沉浸式体验; 状态栏,导航栏的显示与隐藏; Android 全屏方案(隐藏Status Bar和Navigation Ba...
  • hqocshheqing
  • hqocshheqing
  • 2017年03月08日 16:57
  • 1697

android 4.2 隐藏/显示 navigation bar, 实现全屏显示

引子:   eoe 上有人实现了 android 4.0 下 隐藏/显示 navigation bar, 实现全屏显示的方法(http://www.eoeandroid.com/thread-2468...
  • huangbz321
  • huangbz321
  • 2013年09月25日 10:03
  • 3867

android隐藏底部虚拟键Navigation Bar实现全屏

package com.my.fullscreen; import android.app.Activity; import android.os.Bundle; import androi...
  • caiwenfeng_for_23
  • caiwenfeng_for_23
  • 2014年01月24日 10:00
  • 12838

Android 如何关闭Navigation Bar

前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net       ...
  • luckkof
  • luckkof
  • 2013年11月14日 10:11
  • 2901

android开发笔记之虚拟键(navigation bar)的一些状态的读取

最近有一个UI适配的问题,涉及到了虚拟键()
  • hfreeman2008
  • hfreeman2008
  • 2014年05月17日 17:52
  • 4114

iOS: 在navigation controller里,如何hide navigation bar of first sub controller?

ref link: http://stackoverflow.com/questions/845583/iphone-hide-navigation-bar-only-on-first-page ...
  • totogogo
  • totogogo
  • 2012年04月23日 23:21
  • 1981

Android Navigation Bar

[Description] 如何开启或隐藏Navigation Bar导航栏。 如下图红色框标注的区域,就是Navigation Bar区域,它提供三个快捷方式图标,从左到右分别是Back/Hom...
  • wds1181977
  • wds1181977
  • 2016年01月14日 15:10
  • 2150

如何Android中自定义Navigationbar

在如何控制android系统中NavigationBar 的显示与隐藏文章里简要地介绍了Navigationbar的背景知识, NavigationBar的代码是放在...\frameworks\ba...
  • a2758963
  • a2758963
  • 2015年03月06日 09:46
  • 1927

Android系统:如何开启或隐藏Navigation Bar导航 栏

如何开启或隐藏Navigation Bar导航栏? 如下图红色框标注的区域,就是Navigation Bar区域,它提供三个快捷方式图标,从左到右分别是Back/Home/Recent 。 ...
  • lyjIT
  • lyjIT
  • 2016年12月09日 16:42
  • 1244

Android App隐藏Navigation Bar

在OnCreate方法中调用:      contentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)     其中的c...
  • MyArrow
  • MyArrow
  • 2014年12月04日 17:20
  • 8503
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[android] how to hide system bar and navigation bar in android
举报原因:
原因补充:

(最多只允许输入30个字)