2010-10-04 5 views
2

Je suis à la recherche d'un moyen d'afficher et de masquer la barre d'état avec un onClickListener, mais montrant seulement que cela fonctionne.Comment basculer la barre d'état?

WindowManager.LayoutParams lp = getWindow().getAttributes(); 
if (isStatusbarVisible) 
    lp.flags = LayoutParams.FLAG_FULLSCREEN; 
else 
    lp.flags = LayoutParams.FLAG_FORCE_NOT_FULLSCREEN; 
getWindow().setAttributes(lp); 
isStatusbarVisible = !isStatusbarVisible; 

Hiding la barre d'état en utilisant FLAG_FULLSCREEN semble fonctionner que si le drapeau est réglé avant d'appeler setContentView().

Existe-t-il un autre moyen de masquer la barre d'état?

Répondre

4

La réponse est assez simple, le drapeau de compensation FLAG_FULLSCREEN est tous les thats nécessaires:

if (isStatusBarVisible) 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
else 
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
1

J'ai cherché cette solution, et est finalement arrivé à cette mise en œuvre pour basculer en plein écran et désactiver:

private void toggleFullscreen() { 
    WindowManager.LayoutParams attrs = getWindow().getAttributes(); 
    attrs.flags ^= WindowManager.LayoutParams.FLAG_FULLSCREEN; 
    getWindow().setAttributes(attrs); 
} 

Il utilise la logique XOR au niveau du bit pour basculer FLAG_FULLSCREEN.

0

Il y a une meilleure (ne nécessite pas cette variable booléenne) activer la mise en œuvre de la méthode plein écran:

private void toggleFullscreen() { 
    WindowManager.LayoutParams attrs = getWindow().getAttributes(); 
    attrs.flags ^= WindowManager.LayoutParams.FLAG_FULLSCREEN; 
    getWindow().setAttributes(attrs); 
} 

Il utilise la logique XOR au niveau du bit pour basculer FLAG_FULLSCREEN.

Questions connexes