Définitivement masquer la Barre de Navigation dans une activité
Est-il possible de supprimer définitivement la Barre de Navigation sur une activité? Je veux supprimer la barre avec les boutons qui apparaissent sur le bouton de l'écran sur une tablette, pas la Barre d'Action. Ici.
Je sais qu'il n'est pas recommandé de le faire, je n'ai pas pris cette décision, mais j'ai besoin de le faire. Dans ma mise en page, il y a un autre bouton pour quitter l'activité. Le reste de mon application peut avoir et a la Barre de Navigation.
J'ai trouvé ce code en l'adaptant un peu. Le problème est que même quand je masquer la Barre de Navigation, il est d'un noir d'espace à gauche derrière. Je suppose que le système calcule la taille de l'écran compte tenu de la barre de navigation?
public static class Content extends ImageView implements View.OnSystemUiVisibilityChangeListener, View.OnClickListener, ActionBar.OnMenuVisibilityListener {
Activity mActivity;
TextView mTitleView;
Button mPlayButton;
SeekBar mSeekView;
boolean mAddedMenuListener;
boolean mMenusOpen;
boolean mPaused;
boolean mNavVisible;
int mLastSystemUiVis;
Runnable mNavHider = new Runnable() {
@Override public void run() {
setNavVisibility(false);
}
};
public Content(Context context, AttributeSet attrs) {
super(context, attrs);
setOnSystemUiVisibilityChangeListener(this);
setOnClickListener(this);
}
public void init(Activity activity, TextView title, Button playButton,
SeekBar seek) {
//This called by the containing activity to supply the surrounding
//state of the video player that it will interact with.
mActivity = activity;
mTitleView = title;
mPlayButton = playButton;
mSeekView = seek;
mPlayButton.setOnClickListener(this);
setPlayPaused(true);
}
@Override protected void onAttachedToWindow() {
super.onAttachedToWindow();
if (mActivity != null) {
mAddedMenuListener = true;
mActivity.getActionBar().addOnMenuVisibilityListener(this);
}
}
@Override protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
if (mAddedMenuListener) {
mActivity.getActionBar().removeOnMenuVisibilityListener(this);
}
}
@Override public void onSystemUiVisibilityChange(int visibility) {
//Detect when we go out of nav-hidden mode, to clear our state
//back to having the full UI chrome up. Only do this when
//the state is changing and nav is no longer hidden.
int diff = mLastSystemUiVis ^ visibility;
mLastSystemUiVis = visibility;
if ((diff&SYSTEM_UI_FLAG_HIDE_NAVIGATION) != 0
&& (visibility&SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0) {
setNavVisibility(true);
}
}
@Override protected void onWindowVisibilityChanged(int visibility) {
super.onWindowVisibilityChanged(visibility);
//When we become visible or invisible, play is paused.
setPlayPaused(true);
}
@Override public void onClick(View v) {
if (v == mPlayButton) {
//Clicking on the play/pause button toggles its state.
setPlayPaused(!mPaused);
} else {
//Clicking elsewhere makes the navigation visible.
setNavVisibility(true);
}
}
@Override public void onMenuVisibilityChanged(boolean isVisible) {
mMenusOpen = isVisible;
setNavVisibility(true);
}
void setPlayPaused(boolean paused) {
mPaused = paused;
mPlayButton.setText(paused ? R.string.play : R.string.pause);
setKeepScreenOn(!paused);
setNavVisibility(true);
}
void setNavVisibility(boolean visible) {
int newVis = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| SYSTEM_UI_FLAG_LAYOUT_STABLE;
if (!visible) {
newVis |= SYSTEM_UI_FLAG_LOW_PROFILE | SYSTEM_UI_FLAG_FULLSCREEN
| SYSTEM_UI_FLAG_HIDE_NAVIGATION;
}
//If we are now visible, schedule a timer for us to go invisible.
if (visible) {
Handler h = getHandler();
if (h != null) {
h.removeCallbacks(mNavHider);
if (!mMenusOpen && !mPaused) {
//If the menus are open or play is paused, we will not auto-hide.
h.postDelayed(mNavHider, 1500);
}
}
}
//Set the new desired visibility.
setSystemUiVisibility(newVis);
mTitleView.setVisibility(visible ? VISIBLE : INVISIBLE);
mPlayButton.setVisibility(visible ? VISIBLE : INVISIBLE);
mSeekView.setVisibility(visible ? VISIBLE : INVISIBLE);
}
}
- La façon dont vous utilisez ce code?
- J'ai un problème, Mon activité de racine mise en page est RelativeLayout, et il a un enfant en vue de définir android:layout_alignParentBottom="true", la barre de navigation de disparaître, mais à la vue enfant ne se déplace pas sur le bord inférieur de l'écran, comme si la barre de navigation est définie à l'invisible n'ont pas disparu, pouvez-vous l'aider?
Vous devez vous connecter pour publier un commentaire.
Autant que je sache, ce n'est pas possible sans accès root. Ce serait un problème de sécurité pour être en mesure d'avoir une application qui ne peut pas être terminé avec le système de boutons.
Modifier, voir ici: Masquer la Barre Système en Comprimés
Il y a une solution, en commençant avec KitKat (4.4.2), appelé Immersive Mode: https://developer.android.com/training/system-ui/immersive.html
Fondamentalement, vous devez ajouter ce code à votre onResume() méthode:
Vous pouvez
Il y a Deux façons (à la fois exigeant périphérique root) :
1- Premier chemin, ouvrez l'appareil en
adb window command
, puis exécutez la commande suivante:et pour le récupérer il suffit de faire la même, mais le changement
disable
àenable
.2- deuxième moyen, ajoutez la ligne suivante à la fin de votre appareil construire.prop fichier :
alors pour le récupérer il suffit de retirer.
et si vous ne savez pas comment modifier construire.prop fichier:
Vous pouvez masquer la barre de navigation, il suffit d'appeler cette méthode sur votre
onCreate()
,Cela permet de masquer toute la nagiation panneau.espérons qu'il vous aide
Changer le thème de votre manifeste.
Si vous souhaitez masquer la barre de navigation pour une activité que vous pouvez utiliser ceci:
Si vous souhaitez masquer la barre de navigation pour l'ensemble de l'application, vous pouvez utiliser ceci:
Après avoir vu le DevBytes vidéo (par Roman Nurik) et la lecture de la dernière ligne dans les docs, qui dit:
la réponse, radu122 a donné, a travaillé pour moi. Il vous suffit de configurer un gestionnaire et vous serez bon d'aller.
Voici le code qui fonctionne pour moi:
Google dit "après quelques secondes," - mais je veux offrir cette fonctionnalité dès que possible. Peut-être que je vais changer la valeur plus tard, si je le dois, je le mettrai à jour cette réponse.
Commencer par se cacher dans OnResume() de l'activité puis gardez aussi en cachant comme indiqué ci-dessous:
Ma solution, à seulement masquer la barre de navigation, est:
getWindow()
? Dans ma fin il dit: ** Ne peut pas lire le symbole de getWindow().**De Google documents:
Vous pouvez masquer la barre de navigation sur Android 4.0 et supérieur à l'aide de la SYSTEM_UI_FLAG_HIDE_NAVIGATION drapeau.
Cet extrait de code se cache à la fois la barre de navigation et la barre d'état:
http://developer.android.com/training/system-ui/navigation.html