web-dev-qa-db-fra.com

Masquer ICS boutons de sélection des tâches de retour à la maison

Je me demande juste comment masquer les boutons du logiciel ICS retour/accueil/etc par programmation. Tout comme les applications Youtube le font lors de la lecture d'une vidéo. Je veux les masquer pendant la lecture d'une vidéo, mais les apporter vers le haut si l'utilisateur touche l'écran.

Je n'arrive pas à le trouver n'importe où sur le Web ou dans la documentation de Google.

29
rustyshelf

essayez de configurer une fenêtre plein écran avec l'indicateur SYSTEM_UI_FLAG_HIDE_NAVIGATION

23
pinxue

pinxue est parfait ... vous voulez SYSTEM_UI_FLAG_HIDE_NAVIGATION . Exemple:

myView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

Une chose à noter, cependant, est que lors de toute interaction utilisateur (et je veux dire TOUT), la barre de navigation sera affichée à nouveau.

Avec Honeycomb, le plus proche que vous pouvez obtenir est de passer en mode "lumières éteintes" (maintenant appelé "profil bas" ... SYSTEM_UI_FLAG_LOW_PROFILE ). Cela rend juste les éléments de la barre de navigation moins visibles (les petits "points" que vous avez probablement vus). Si vous voulez faire de votre mieux pour maintenir la compatibilité descendante avec Honeycomb, vous pouvez utiliser la réflexion pour utiliser la "meilleure" méthode:

// Ask the System Bar to hide
int whichHiddenStatusToUse = Android.view.View.STATUS_BAR_HIDDEN;
try {
    // if this next line doesn't thrown an exception then we are on ICS or  
    // above, so we can use the new field.
    whichHiddenStatusToUse = View.class.getDeclaredField("SYSTEM_UI_FLAG_HIDE_NAVIGATION").getInt(mDrawingSurface);
} catch (Exception ex) {
}
// now lets actually ask one of our views to request the decreased visibility
myView.setSystemUiVisibility(whichHiddenStatusToUse);
31
Jeremy Logan

Vous voulez SYSTEM_UI_FLAG_HIDE_NAVIGATION .

Ce drapeau a été ajouté à partir de Sandwich à la crème glacée, API 14. Avant le 14, un drapeau STATUS_BAR_HIDDEN a été ajouté dans Honeycomb, API 11. Auparavant, les boutons de navigation doux n'existaient pas, donc les modes plein écran étaient entièrement géré par Themes (spécifiquement Theme.NoTitleBar.Fullscreen ).

Utilisation:

if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH )
    mBaseLayout.setSystemUiVisibility( View.SYSTEM_UI_FLAG_HIDE_NAVIGATION );
else if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB )
    mBaseLayout.setSystemUiVisibility( View.STATUS_BAR_HIDDEN );
6
reor

dans AndroidManifest.xml ajoutez ceci:

<uses-permission Android:name="Android.permission.BROADCAST_STICKY"/>

alors vous pouvez utiliser cette fonction pour afficher et masquer la barre de navigation accueil/retour

private void changeSystemBarVisibilty(boolean show)
{
    Context context = getApplicationContext();
    final Intent intent = new Intent("Android.intent.action.SYSTEM_BAR_VISIBILITY");
    intent.putExtra("show", show);
    context.sendStickyBroadcast(intent);
}
0
Elad

Cette réponse ne répond peut-être pas directement à la question. mais je le poste afin que cela puisse aider les autres à gagner du temps.

Je devais masquer complètement la barre de navigation. Même lorsque l'utilisateur clique sur l'écran, il doit rester caché.

Rien de ce qui précède n'a fonctionné pour moi.

J'ai écrit un cours après quelques jours de recherche sur ce sujet il y a longtemps. Je me retrouve sur ce cours.

tilsTaskBar.Java

Je n'ai pas pu le tester partout, mais cela fonctionne sur 4. **

REMARQUE: J'ai utilisé cette classe pour des applications spéciales, ce qui n'est pas pour les utilisateurs typiques.

Si vous masquez la barre de navigation avec cette classe, elle ne s'affichera plus jusqu'à ce que vous redémarriez l'appareil ou que vous la montriez à nouveau avec la même classe.

Donc, utilisez-le uniquement si vous en avez vraiment besoin.

0
MBH