2014-06-21 3 views
3

내 앱이 실제 전체 화면 (상태 표시 줄 없음, 동작 표시 줄 없음) 및 "일반 모드"(동작 표시 줄 및 상태 표시 줄) 사이를 전환하려고합니다. 이를 위해, 나는 오버레이 모드에서 작업 표시 줄을 설정 한 나는 사용자가 작업 표시 줄과 상태 표시 줄에 모두 전환 할 수 있습니다 :오버레이 동작 표시 줄 상태 표시 줄에 의해 가려진

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);  
actionBar.show(); 

이 꺼져 .. 그리고 :

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 
actionBar.hide(); 

이를 한 가지 예외 만 제외하면 작동합니다. 실제 레이아웃은 이러한 작업 중 하나가 발생할 때마다 크기가 조정됩니다. 음, 또 다른 플래그가 단지에 대해 분명히 설명하기 위해 존재하고, 그래서 난 내 onCreate()에 추가하지 :

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); 

확인을 이제 크기 조정하지만 지금은 내 작업 표시 줄이 반 상태에 가려 더 이상 문제입니다 바 모두에 때마다 : 내가 부족 뭔가

obscured action bar

있습니까? 상태 표시 줄 바로 아래에 작업 표시 줄을 올바르게 표시하려면 어떻게합니까?

+0

표시하고 숨길 수있는 플래그를 사용하는 이유 –

+0

작동하지 않는 것 같습니다. 나는'decorView.setSystemUiVisibility (View.SYSTEM_UI_FLAG_FULLSCREEN)'을 사용해 보았지만 위에서 설명한 방법과 아무런 차이가없는 것 같다. 크기 조정에 영향을주는 유일한 플래그는'FLAG_LAYOUT_NO_LIMITS'이며, 이는 액션 바를 클리핑시킵니다. –

답변

7

시행 착오 끝에 해결책을 찾았습니다. 이미지 크기를 조정하지 않고 작업 표시 줄과 상태 표시 줄을 모두 숨 깁니다.

private void toggleFullscreen(boolean on) { 
    ActionBar actionBar = getActionBar(); 
    View decorView = getWindow().getDecorView(); 

    if (on) { 
     decorView.setSystemUiVisibility(
       View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
       | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
       | View.SYSTEM_UI_FLAG_FULLSCREEN); 
     actionBar.hide(); 
    } 
    else { 
     decorView.setSystemUiVisibility(
       View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
       | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
     actionBar.show(); 
    } 

}