How to Hide System Navigation Bar in Tablets?
Asked Answered
G

9

11

At my Tablet, it has following bar to control back, home etc. (I don't know the correct name, status bar? control bar? Action bar? or other)

In program, it use following method to have a full screen.

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

But I don't know why the bar still in here. Because of it, I can't have the correct screen size.

Who can tell me how to remove it?

The Bar

Grimaldo answered 26/9, 2012 at 15:29 Comment(1)
Does any method can ignore this system bar to have the correct screen size?Grimaldo
M
13

In Tablets running Android 4+, it is not possible to hide the System / Navigation Bar.

From documentation (Controls for system UI visibility section) :

The SYSTEM_UI_FLAG_HIDE_NAVIGATION is a new flag that requests the navigation bar hide completely. Be aware that this works only for the navigation bar used by some handsets (it does not hide the system bar on tablets).

However, you could try to dim the system bar as done sometimes during gaming and video playback.

The SYSTEM_UI_FLAG_LOW_PROFILE flag replaces the STATUS_BAR_HIDDEN flag. When set, this flag enables “low profile" mode for the system bar or navigation bar. Navigation buttons dim and other elements in the system bar also hide. Enabling this is useful for creating more immersive games without distraction for the system navigation buttons.

Morningglory answered 26/9, 2012 at 15:32 Comment(9)
Does any method can ignore this system bar to have the correct screen size?Grimaldo
You could try to dim the system bar.Morningglory
how to dim it? Could you tell me?Grimaldo
I found it. #5884289Grimaldo
Yeah, it would work if you are using Android versions before ICS. Post Android 4+, the flag needs to be SYSTEM_UI_FLAG_LOW_PROFILE , as I have already mentioned in my answer. For Android 4+, use myView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); to dim the system barMorningglory
oh no! I try the method, but it still in here. But it's style changed dot. e.g. the back and home key are changed to a dot.Grimaldo
" Navigation buttons dim and other elements in the system bar also hide." This is what the documentation says. I guess whatever you are getting is the best thing you could get. I believe the bar would dim if you did not touch the screen for sometime.Morningglory
I will bravely to face it. Thanks!Grimaldo
No problem. And yeah, please do upvote / accept if the answer was of any help to you. Thanks! Cheers and good luck! :)Morningglory
T
36

There seems to be a UNDOCUMENTED flag for this:

yourGreatView.setSystemUiVisibility(8);
  • no black footer ("hidden" system bar)
  • resizes view if keyboard shows up (no overlapped inputs)

Verified on Android 4.1.2 (API 16)
Verified on Android 4.1.1 (API 16)
Verified not working on Android 4.0.4 (API 15)

(all tablets)

Thurible answered 5/3, 2013 at 15:18 Comment(5)
this must be post in every question about Uisystem on ICS this work fine and is cooler than LOW PROFILE MODE Can't thank you enough for thisRiker
strange, i have 2 tablets running 4.2.2. it works on one and not on the other. must be some other settings involved?Judsen
Yea, hard to upvote when it doesn't work for most of us. WAAAYYY too many variants of Android, its hardware, .... I hate iPhone, but man, I'm really getting sick of this...Kopeck
Does not work on android 5.0.1, i am doing it as: @Override protected void onResume() { super.onResume(); View decorView = getWindow().getDecorView(); decorView.setSystemUiVisibility(8);Cauda
I can confirm it doesn't work on Android 5.0.1, Nexus 6p.Blevins
M
13

In Tablets running Android 4+, it is not possible to hide the System / Navigation Bar.

From documentation (Controls for system UI visibility section) :

The SYSTEM_UI_FLAG_HIDE_NAVIGATION is a new flag that requests the navigation bar hide completely. Be aware that this works only for the navigation bar used by some handsets (it does not hide the system bar on tablets).

However, you could try to dim the system bar as done sometimes during gaming and video playback.

The SYSTEM_UI_FLAG_LOW_PROFILE flag replaces the STATUS_BAR_HIDDEN flag. When set, this flag enables “low profile" mode for the system bar or navigation bar. Navigation buttons dim and other elements in the system bar also hide. Enabling this is useful for creating more immersive games without distraction for the system navigation buttons.

Morningglory answered 26/9, 2012 at 15:32 Comment(9)
Does any method can ignore this system bar to have the correct screen size?Grimaldo
You could try to dim the system bar.Morningglory
how to dim it? Could you tell me?Grimaldo
I found it. #5884289Grimaldo
Yeah, it would work if you are using Android versions before ICS. Post Android 4+, the flag needs to be SYSTEM_UI_FLAG_LOW_PROFILE , as I have already mentioned in my answer. For Android 4+, use myView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); to dim the system barMorningglory
oh no! I try the method, but it still in here. But it's style changed dot. e.g. the back and home key are changed to a dot.Grimaldo
" Navigation buttons dim and other elements in the system bar also hide." This is what the documentation says. I guess whatever you are getting is the best thing you could get. I believe the bar would dim if you did not touch the screen for sometime.Morningglory
I will bravely to face it. Thanks!Grimaldo
No problem. And yeah, please do upvote / accept if the answer was of any help to you. Thanks! Cheers and good luck! :)Morningglory
A
5

In Android 4.4 and above you can completely hide the navigation bar and have it remain hidden using a combination of fullscreen and immersion:

@Override
protected void onResume() {
    super.onResume();

    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);
}
Adkins answered 17/4, 2015 at 12:46 Comment(1)
It seems if I remove the first View item in the setSystemUiVisibility I still have my action bar but no status and nav bar. However opening the keyboard brings the bars back. Is there a way to prevent this?Debase
S
4
public class Utils {

public static void hideNavigations(Activity context) {
    View decorView = context.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);
}

}

In your Activity:

@Override
protected void onResume() {
    super.onResume();
    Utils.hideNavigations(this);
}
Speechmaker answered 5/3, 2017 at 6:49 Comment(0)
M
3

A very nuclear option is to just delete the SystemUI.apk from /system/app/. But warning this will remove it from the tablet completely. I'm doing this on a tablet i'm using for a front panel kiosk, then i set the tablet to boot into my app.

Mccarter answered 30/6, 2014 at 15:4 Comment(4)
I'm running 4.4.4 on a Nexus 7, and SystemUI.apk was in /system/priv-app instead.Aton
What is the easy way to reach at that path?Cauda
adb shell "rm /system/app/SystemUI.apk"Mccarter
you should back up the SystemUI.apk file before deleting this incase you need to put in back . adb pull /system/app/SystemUI.apk. This path may be different depending on tablet. use adb shell and explore the file system on your tablet. These operations require root privaleges and for this partition to be mounted as writable. you may need to do "mount -o remount,rw /system" and then rm the SystemUI.apk file.Mccarter
A
1

As other people say use the command "pm disable com.android.systemui" in root mode, so the following code execute this command in your android app, just call the following method, your tablet needs to be rooted.

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

This code hide the navigation bar on the android system, to reappear system bar use "pm enable com.android.systemui" instead of "pm disable com.android.systemui" in the previous code.

Ave answered 6/3, 2015 at 13:53 Comment(0)
H
0

Since the system bar is used to navigate in android there is not an easy way to achieve this, you can dissable/dim the controls:

View v = findViewById(R.id.view_id);
v.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);

But you can get the size of the screen without the systembar (not sure from what version, I think 3.1)

Method rawW = Display.class.getMethod("getRawWidth");
Method rawH = Display.class.getMethod("getRawHeight");
int width = (Integer)mGetRawW.invoke(dp);
int height = (Integer)mGetRawH.invoke(dp);

If your app has root access there is also a way to achieve it: http://ppareit.github.com/HideBar/

Howbeit answered 26/9, 2012 at 15:39 Comment(0)
P
0

You can't hide it but you can simply disable it, except home. Try this link. . Using SYSTEM_UI_FLAG_LOW_PROFILE you can dim your system bar and using onWindowFocusChanged() can take the focus and collapse it.

Perfervid answered 27/3, 2013 at 6:4 Comment(0)
A
0

Below code worked for me -

You can write it in onCreate() or onResume( if needed)

getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_IMMERSIVE
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
Amal answered 6/1, 2016 at 0:12 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.