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

Я хочу постоянно скрывать навигационную панель в своей деятельности (не целая система 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

    Процесс пакетной обработки Photoshop приостанавливается при каждом действии

    Извлечение файлов из каталога, содержащего большое количество файлов

    Передача переменной количества аргументов вокруг

    Как определить, какой SKSpriteNode был затронут

    Драйвер принтера Nt4.0 не совместим с Vista?

    Маршрутизация в ASP.NET MVC, показывающая имя пользователя в URL-адресе

    Программа, которая регистрирует использование ЦП в Windows 7

    Каковы ограничения C ++ по сравнению с C-языком?

    Разница между ключом раздела, составным ключом и ключом кластеризации в Cassandra?

    Рекомендуемый способ включения бутстрап-библиотеки в приложение Ember.JS ember-cli

    UnicodeDecodeError при чтении CSV-файла в Pandas с Python

    Entity Framework – добавить свойство навигации вручную

    C ++ 11 допускает инициализацию в classе нестатических и неконстантных элементов. Что изменилось?

    Получение MathJax для обновления после изменений в модели AngularJS

    Как определить закрытый class в C ++?

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