2014-03-08 2 views
12

В настоящее время я использую режим низкого профиля, чтобы скрыть верхнюю черную полосу и затемнить нижнюю навигационную панель. Я хочу использовать режим Immersive на Android, но у меня проблемы с панелью действий. Я бы хотел, чтобы режим Immersive был липким, но держите панель действий там, где она должна быть. Нет ли способа сделать это?Полный экран + панель действий (Immersive)

Это то, что у меня есть до сих пор, и оно работает, за исключением того, что оно также скрывает панель действия.

@TargetApi(19) 
@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    if (hasFocus) { 
     if (android.os.Build.VERSION.SDK_INT >= 19) { 
      getWindow().getDecorView().setSystemUiVisibility(
       View.SYSTEM_UI_FLAG_LAYOUT_STABLE | 
       View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | 
       View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | 
       View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | 
       View.SYSTEM_UI_FLAG_FULLSCREEN | 
       View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
     } 
    } 
} 

Любые советы были бы замечательными. Спасибо.

ответ

16

Я просто попробовал этот код на моем Nexus 7 (Android 4.4.2) и работает отлично

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { 
     if (hasFocus) { 
      decorView 
        .setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
          | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
          | View.SYSTEM_UI_FLAG_FULLSCREEN 
          | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
     } 
    } 
} 
+5

Да, преступник, казалось, был View.SYSTEM_UI_FLAG_LAYOUT_STABLE. Однако теперь, когда я начинаю новую деятельность, бары поднимаются (затем отступают). Есть ли способ установить эти флаги перед началом действия? – Andrew121007

0

Вы можете добавить это близко в onResume случае.

@Override 
    public void onResume() { 
     super.onResume(); 
     getWindow().getDecorView().setSystemUiVisibility(
       View.GONE); 
    }