Y at-il un moyen de cacher le système / barre de navigation dans ICS Android

je voudrais étendre la discussion concernant la dissimulation du système/barre de navigation au bas de l'écran sur Android Ice Cream Sandwich (4.0 et plus) Appareils tablette.

il y a déjà un thread ( est-ce qu'il y a un moyen de cacher la barre de système dans Android 3.0? C'est un appareil interne et je gère la navigation ) sur le fait de cacher la barre sur les appareils Honeycomb. Mes clients, cependant, vont utiliser les nouveaux appareils de Sandwich à la crème glacée et sont très désireux de cacher la barre en bas de l'écran. Leur application n'est pas destinée à une utilisation régulière par les consommateurs et il est très important pour eux de prendre en charge l'ensemble de l'écran pour fournir leur expérience. Comment est-il possible de cacher cette barre -- ou du moins, de modifier le comportement de tous les boutons -- Sans enraciner les appareils ou réécrire son micrologiciel?

20
demandé sur Community 2012-03-29 17:52:05

12 réponses

Check out SYSTEM_UI_FLAG_HIDE_NAVIGATION , ce drapeau cache la barre de navigation jusqu'à ce que l'utilisateur interagisse avec l'appareil. Il a été introduit dans Android 4.0. Vous pouvez activer ce drapeau par exemple comme ceci:

getWindow().getDecorView()
           .setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

notez que la navigation ne disparaîtra pas de nouveau automatiquement, vous devez la régler à chaque fois que l'utilisateur interagit avec l'appareil.

vous pouvez également rendre la navigation moins gênante en utilisant SYSTEM_UI_FLAG_LOW_PROFILE , cela change les boutons en petits points (par exemple comme l'application de caméra) .

24
répondu Ben Leggiero 2015-03-19 21:01:13

sur les dispositifs enracinés, j'utilise la commande adb suivante

adb shell pm disable com.android.systemui

pour masquer la barre de navigation de façon permanente. Pour le montrer à nouveau, Lancez

adb shell pm enable com.android.systemui

jusqu'à présent, il fonctionne très bien pour moi

12
répondu Nartus Team 2014-03-21 06:59:36

utiliser le code ci-dessous est une façon de le faire pour masquer la navigation

getWindow().getDecorView()
           .setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

Mais le problème ci-dessus est qu'il devient visible dès que l'utilisateur touche l'écran.

dans Android Kitkat Il ya une fonctionnalité appelée IMMERSIVE qui cache la barre de notification et la navigation. Il ne montre pas, même si l'utilisateur interagit avec l'écran. Toutefois, l'utilisateur peut le rendre visible en le faisant glisser du haut de l'écran vers bas. Ci-dessous est le code pour y parvenir

//Initializew this in onCreate()
View mDecorView = getWindow().getDecorView();

//Then call this function
private void hideSystemUI() {
     mDecorView.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_LOW_PROFILE
            | View.SYSTEM_UI_FLAG_IMMERSIVE);
}

cependant dans mon cas je n'ai jamais voulu que la barre de navigation et de notification soit visible même si l'utilisateur glisse du haut de l'écran vers le bas. J'ai essayé et j'ai pu y arriver en partie. Ce que j'ai fait, c'est que j'ai mis en place un CountDownTimer qui appellerait hideSystemUI() à chaque seconde environ. Je sais que c'est pas la meilleure façon de le faire. Mais je n'ai pas d'autre solution pour le faire.

si quelqu'un est tout alors s'il vous plaît laissez-moi savoir comment cacher en permanence de navigation et la barre de notification :) j'Espère que cette réponse aide à quelqu'un dans le futur :)

Regarder ce vidéo pour mieux comprendre à propos de cette fonctionnalité.

4
répondu ik024 2014-07-06 10:35:28

mise à jour-il y a un travail autour duquel on peut utiliser pour de tels cas (configurer manuellement l'application pour le client). En effet, la barre de navigation ne peut pas être supprimée dans le cadre donné.

cependant, il y a une solution pour cacher la barre de navigation si l'enracinement du dispositif est une option pour vous. Voici comment:

dispositif racine

installer et faire fonctionner Busybox

Installez HideBar

dans HideBar il y a une option pour exécuter en mode 'Kiosk', dans lequel il n'y a aucun moyen de ré-afficher la barre de navigation. Inutile de dire que tu dois vraiment faire attention avec ça.

risques impliqués:

  • briquage de l'appareil

  • erreur dans L'installation de BusyBox, ce qui pourrait rendre les choses un peu délicates, bien qu'il soit très peu probable de causer une perte d'information.

  • entrer dans une impasse où vous ne pouvez pas quitter votre application. Par exemple, si 1 votre interface graphique ne fournit pas d'option de fermeture, 2 votre application démarre automatiquement au démarrage, 3 HideBar ne permet pas de ré-afficher la barre de navigation et 4 HideBar affiche la barre de navigation au démarrage. Cependant cela peut être surmonté en arrêtant simplement / désinstallant votre application de la bad.

Voici d'autres questions identiques:

3
répondu ılǝ 2017-05-23 12:26:12

bien que ce soit une solution hacky, je pense qu'il mérite une attention parce que ne nécessite pas enraciner l'appareil: getWindow().getDecorView().setSystemUiVisibility(8); .

2
répondu Bianca D. 2013-10-30 12:48:10

masquer la barre D'état et la barre de navigation dans android ics utiliser

LinearLayout layout = (LinearLayout)findViewById(R.id.layout);
layout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
1
répondu sukumar 2012-09-22 05:33:44

modifier: à partir de 4.4 (19) Vous pouvez utiliser ce qui suit pour activer ce qui est appelé "mode immersif". Il a été introduit pour le Vrtoolkit en carton de Google, mais peut être utilisé en général.

setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE)

https://developer.android.com/training/system-ui/immersive.html

De mes efforts, il semble que: setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) ne fonctionne pas sur les tablettes.

il fonctionne sur smartphones (testé avec un Nexus 4 Mako), mais il réapparaîtra sur un événement touch/click. Cela semble aussi capturer focus à la barre, vous forçant à cliquer deux fois pour retrouver focus à la vue.

j'ai essayé de trouver un moyen de piéger l'événement qui fait afficher de nouveau la barre. Pas de chance.

étant têtu, je vais télécharger le code OS android, démarrer le débogueur eclipse et aller a-huntin. Ce n'est pas un bug - la barre de navigation est cruciale pour le cycle de vie de l'application.

j'ai vu des applications (jeux et autres) donc il y a un moyen sans enracinement.

1
répondu Dominic Cerisano 2015-02-03 02:05:57

placez ce code dans votre étiquette d'application dans le fichier de manifeste pour cacher la barre d'onglet par défaut

<Application
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" <!--
other parameters of application tag-->
>

et ensuite de faire un plan linéaire ou relatif et de le placer dans votre plan d'activité.

0
répondu Adeel 2013-03-26 06:45:25

vous ne pouvez pas le cacher à moins d'avoir enraciné le dispositif. Mais bien sûr, il existe une solution qui pourrait ne pas correspondre à vos besoins, mais plusieurs applications bien connues sur le marché à l'heure actuelle en utilisant cette stratégie pour réaliser cette fonctionnalité de barre de menu désactivable pour leurs applications.

  • Accorder des privilèges administrateur.
  • définir le mot de passe et verrouiller le périphérique en utilisant l'api de profil d'administrateur de périphérique
  • alors chargez ce que jamais L'UIs sur le dessus de la écran de verrouillage natif. (Bien sûr, cela montrera l'écran de verrouillage de fond chaque fois qu'une transition se produit entre les activités. Mais si la logique est bien organisée, alors elle sera douce et moins remarquée par l'utilisateur)
  • lorsqu'il est nécessaire d'activer le retour, réinitialisez le mot de passe à "" en utilisant resetPassword (" " , 0) de l'objet device policy manager.
0
répondu M P Mathugama 2013-07-10 12:51:10

peut être est le bouton behavor est enought vous pouvez avoir un regard dans ma réponse ici

vous avez toujours la barre, mais vous ne pouvez pas sortir app sans Reboot tablette

0
répondu Philippe T. 2017-05-23 11:54:55

vous pouvez masquer la barre de navigation sur Android 4.0 et plus en utilisant le drapeau SYSTEM_UI_FLAG_HIDE_NAVIGATION. Cet extrait cache à la fois la barre de navigation et la barre d'état:

View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions

voir le texte suivant: Cacher la barre de Navigation

0
répondu dayanruben 2015-02-23 21:00:10

si votre appareil est enraciné ce code vous aidera à cacher la barre de système sur ICS (Je l'ai testé sur Samsung Galaxy Tab 2 et il fonctionne excellent):

ArrayList<String> list = new ArrayList<String>();
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
    list.add(envName + "=" + env.get(envName));
}

// Array containing the environment to start the new process in
String[] envp = (String[]) list.toArray(new String[0]);

String hidingCommand = "while [ true ]\n" + "do\n" + "killall com.android.systemui\n" + "done\n";
Runtime.getRuntime().exec(new String[] { "su", "-c", command }, envp);

myContext.sendBroadcast(new Intent("com.mycompany.myapp.ACTION_BARHIDDEN"));
-2
répondu yuralife 2013-02-07 09:48:09