Как скрыть навигационную панель постоянно в андроид-активности?

Я хочу постоянно скрывать навигационную панель в своей деятельности (не целая система ui). теперь я использую этот кусок кода

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 

Он скрывает панель, но когда пользователь коснулся экрана, он снова показывает. есть ли какой-либо способ скрыть его навсегда до активности onStop() ;

    Отрывки:

    FullScreenFragment.java

    HideNavigationBarComponent.java


    Это для Android 4.4+

    Попробуйте режим погружения https://developer.android.com/training/system-ui/immersive.html

    Быстрый fragment (для classа Activity ):

     private int currentApiVersion; @Override @SuppressLint("NewApi") protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); currentApiVersion = android.os.Build.VERSION.SDK_INT; final int flags = 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; // This work only for android 4.4+ if(currentApiVersion >= Build.VERSION_CODES.KITKAT) { getWindow().getDecorView().setSystemUiVisibility(flags); // Code below is to handle presses of Volume up or Volume down. // Without this, after pressing volume buttons, the navigation bar will // show up and won't hide final View decorView = getWindow().getDecorView(); decorView .setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() { @Override public void onSystemUiVisibilityChange(int visibility) { if((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { decorView.setSystemUiVisibility(flags); } } }); } } @SuppressLint("NewApi") @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if(currentApiVersion >= Build.VERSION_CODES.KITKAT && hasFocus) { 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); } } 

    Если у вас возникли проблемы, когда вы нажимаете Громкость или Громкость, которые отображаются на панели навигации. Я добавил код в onCreate см. SetOnSystemUiVisibilityChangeListener

    Вот еще один смежный вопрос:

    Навигация по погружным режимам становится липким после нажатия на тома или минимизации-восстановления

    Сделай это.

     public void FullScreencall() { if(Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api View v = this.getWindow().getDecorView(); v.setSystemUiVisibility(View.GONE); } else if(Build.VERSION.SDK_INT >= 19) { //for new api versions. View decorView = getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; decorView.setSystemUiVisibility(uiOptions); } } 

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

    Если вы хотите, чтобы это было постоянным, просто вызовите FullscreenCall() внутри onResume() .

    Использование: –

     view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 

    В планшетах с Android 4+ невозможно скрыть панель «Система / Навигация».

    Из документации :

    SYSTEM_UI_FLAG_HIDE_NAVIGATION – это новый флаг, который полностью скрывает навигационную панель. Имейте в виду, что это работает только для панели навигации, используемой некоторыми телефонами (она не скрывает системную панель на планшетах).

    Согласно сайту разработчика Android

    Я думаю, вы не можете (насколько я знаю) скрывать навигационную панель навсегда.

    Однако вы можете сделать один трюк. Это трюк.

    Просто когда navigation bar появляется, когда пользователь касается экрана. Сразу же спрячьте это снова. Это весело.

    Проверьте это .

     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); } 

    См. Это для получения дополнительной информации об этом.

    Скрыть системную панель в планшетах

    Я думаю, что код удара поможет вам и добавит этот код перед setContentView ()

     getWindow().setFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 

    Добавьте этот код за setContentView () getWindow (). GetDecorView (). SetSystemUiVisibility (View.SYSTEM_UI_FLAG_LOW_PROFILE);

    Его проблема с безопасностью: https://stackoverflow.com/a/12605313/1303691

    поэтому невозможно скрыть навигацию на планшете навсегда с помощью одного вызова в начале создания представления. Он будет скрыт, но он появится при касании экрана. Таким образом, только второе касание к экрану может вызвать onClickEvent на вашем макете. Поэтому вам нужно перехватить этот вызов, но я еще не справился с этим, я обновлю свой ответ, когда узнаю его. Или ты уже ответишь?

    Попробуй это.

     View decorView = getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(uiOptions); 

    дайте мне знать, если это поможет … 🙂

    Это мое решение:

    Сначала определите логическое значение, указывающее, видима ли панель навигации или нет.

     boolean navigationBarVisibility = true //because it's visible when activity is created 

    Второй метод создания, который скрывает навигационную панель.

     private void setNavigationBarVisibility(boolean visibility){ if(visibility){ View decorView = getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(uiOptions); navigationBarVisibility = false; } else navigationBarVisibility = true; } 

    По умолчанию, если вы нажмете на активность после панели навигации hide, появится панель навигации. Таким образом, мы получили состояние, если оно будет видно, мы скроем его.

    Теперь установите OnClickListener в ваше представление. Я использую для себя такое представление:

      playerSurface.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setNavigationBarVisibility(navigationBarVisibility); } }); 

    Кроме того, мы должны вызвать этот метод при запуске активности. Потому что мы хотим скрыть это в начале.

      setNavigationBarVisibility(navigationBarVisibility); 
    Interesting Posts

    long / bigint / десятичный эквивалентный тип данных в R

    Легкий способ конвертировать длинный в широкий формат с подсчетами

    Как определить различные зависимости для разных продуктов

    Где Firefox хранит сертификаты и как их удалить?

    Как разобрать NSString, содержащий XML в Objective-C?

    dplyr суммировать: Эквивалент «.drop = FALSE» для сохранения групп с нулевой длиной в выходе

    Сохранить видео Youtube для iPhone в приложении

    Преобразование RGB в цветовой профиль CMYK в GIMP

    Изменение цвета текстового поля с помощью обязательного поля проверки. Нет регуляторов расширения

    Удалить раздел и расширить параметр раздела отключен

    В Scala есть оператор присваивания «=» вызов метода?

    Как найти метод, называемый текущим методом?

    Включение и отключение широковещательного приемника

    Как использовать FileSystemObject в VBA?

    Преимущество использования Parcelable вместо сериализации объекта

    Давайте будем гением компьютера.