2010-10-04 5 views
2

Я ищу способ показать и скрыть строку состояния с помощью onClickListener, но только показывая, что он работает.Как переключить панель состояния?

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; 

скрытие строки состояния с помощью FLAG_FULLSCREEN, кажется, работает только, если флаг установлен перед вызовом setContentView().

Есть ли другой способ скрыть строку состояния?

ответ

4

Ответ довольно прост, очищая FLAG_FULLSCREEN флаг является все то будет необходимым:

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

Я искал для этого решения, и, наконец, пришли с этой реализации, чтобы переключиться на полный экран и выключается:

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

Он использует побитовое исключающее логику для переключения FLAG_FULLSCREEN.

0

Там же лучше (не требует, чтобы логические переменного) переключений полного осуществления способа экрана:

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

Он использует побитовую исключающую логику для переключения FLAG_FULLSCREEN.

Смежные вопросы