web-dev-qa-db-fra.com

Comment masquer la barre de touches programmables sur le téléphone Android?

enter image description here

Lorsque mon application démarre, j'aimerais masquer la barre des touches programmables (dans un rectangle rouge) pour avoir un écran plus grand.

  1. Comment puis-je le cacher?

  2. Dois-je afficher la barre à dessein lorsque l'application se ferme? Ou il se restaurera automatiquement après la fermeture de l'application?

Android 4.1, sans touches matérielles sur le devant du téléphone.

36
ohho

Essayer

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

De l'officiel doc

L'indicateur SYSTEM_UI_FLAG_LOW_PROFILE remplace l'indicateur STATUS_BAR_HIDDEN. Lorsqu'il est défini, cet indicateur active le mode "profil bas" pour la barre système ou la barre de navigation. Les boutons de navigation s'affaiblissent et les autres éléments de la barre système sont également masqués. L'activer est utile pour créer des jeux plus immersifs sans distraction pour les boutons de navigation système.

L'indicateur SYSTEM_UI_FLAG_VISIBLE remplace l'indicateur STATUS_BAR_VISIBLE pour demander que la barre système ou la barre de navigation soient visibles.

Le SYSTEM_UI_FLAG_HIDE_NAVIGATION est un nouveau drapeau qui demande que la barre de navigation se masque complètement. Sachez que cela ne fonctionne que pour la barre de navigation utilisée par certains combinés (elle ne masque pas la barre système sur les tablettes). La barre de navigation revient à l'affichage dès que le système reçoit une entrée utilisateur. En tant que tel, ce mode est utile principalement pour la lecture vidéo ou d'autres cas dans lesquels tout l'écran est nécessaire mais aucune entrée utilisateur n'est requise.

Le comportement de la barre de navigation dépend de l'application IIRC, il devrait donc s'afficher à nouveau une fois que l'utilisateur a quitté votre application.

26
MarsAtomic

Je sais que c'est tard, mais c'est la bonne réponse, alors ce que vous essayez de faire, c'est ce qu'on appelle le mode immersif. pour (API 19)

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

Le code que vous demandiez est:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        getWindow().getDecorView().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);
    }
}
47
mhdjazmati