Подтвердить что ты не робот

Как скрыть системную панель навигации в планшетах?

В моем планкторе у него есть следующий бар для управления, дома и т.д. (я не знаю правильное имя, панель состояния? панель управления? Панель действий? или другое)

В программе он использует следующий метод для полного экрана.

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.PROGRESS_INDETERMINATE_OFF);

Но я не знаю, почему бар все еще здесь. Из-за этого я не могу иметь правильный размер экрана.

Кто может сказать мне, как его удалить?

The Bar

4b9b3361

Ответ 1

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

Из документация (Элементы управления для видимости интерфейса пользовательского интерфейса системы):

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

Тем не менее, вы можете попытаться уменьшить системную панель, как это делается иногда во время воспроизведения игр и видео.

Флаг SYSTEM_UI_FLAG_LOW_PROFILE заменяет STATUS_BAR_HIDDEN флаг. При установке этот флаг позволяет использовать режим "низкого профиля" для системы бар или панель навигации. Кнопки навигации dim и другие элементы в системная панель также скрывается. Включение этого полезно для создания большего количества захватывающие игры без отвлечения для кнопок навигации системы.

Ответ 2

Для этого есть флаг UNDOCUMENTED:

yourGreatView.setSystemUiVisibility(8);
  • нет черного нижнего колонтитула ( "скрытая" системная панель)
  • изменяет размер, если отображается клавиатура (без перекрывающихся входов)

Проверено на Android 4.1.2 (API 16)
Проверено на Android 4.1.1 (API 16)
Проверено, не работает на Android 4.0.4 (API 15)

(все планшеты)

Ответ 3

Очень ядерная опция - просто удалить SystemUI.apk из /system/app/. Но предупреждение это полностью удалит его из планшета. Я делаю это на планшете, который я использую для киоска на передней панели, затем я установил планшет для загрузки в свое приложение.

Ответ 4

В Android 4.4 и выше вы можете полностью скрыть панель навигации и оставить ее скрытой, используя комбинацию полного экрана и погружения:

@Override
protected void onResume() {
    super.onResume();

    View decorView = getWindow().getDecorView();
    decorView.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);
}

Ответ 5

public class Utils {

public static void hideNavigations(Activity context) {
    View decorView = context.getWindow().getDecorView();
    decorView.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);
}

}

В вашей деятельности:

@Override
protected void onResume() {
    super.onResume();
    Utils.hideNavigations(this);
}

Ответ 6

Как говорят другие люди, используйте команду "pm disable com.android.systemui" в корневом режиме, поэтому следующий код выполнит эту команду в вашем приложении для Android, просто вызовите следующий метод, ваш планшет должен быть внедрен.

private void hideNavigationBar(){
        try {
            Process process = Runtime.getRuntime().exec("su");
            DataOutputStream os = new DataOutputStream(process.getOutputStream());
            os.writeBytes("pm disable com.android.systemui\n");
            os.flush();
            os.writeBytes("exit\n");
            os.flush();
            process.waitFor();
            //////////////////////////////////////
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Этот код скрыть навигационную панель в системе Android, чтобы снова использовать системную панель, используйте "pm enable com.android.systemui" вместо "pm disable com.android.systemui" в предыдущем коде.

Ответ 7

Так как системная панель используется для навигации в android, нет простого способа добиться этого, вы можете разгладить/сгладить элементы управления:

View v = findViewById(R.id.view_id);
v.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);

Но вы можете получить размер экрана без системной панели (не уверен, из какой версии, я думаю, 3.1)

Method rawW = Display.class.getMethod("getRawWidth");
Method rawH = Display.class.getMethod("getRawHeight");
int width = (Integer)mGetRawW.invoke(dp);
int height = (Integer)mGetRawH.invoke(dp);

Если у вашего приложения есть доступ к корню, есть также способ его достижения: http://ppareit.github.com/HideBar/

Ответ 8

Вы не можете скрыть это, но вы можете просто отключить его, кроме дома. Попробуйте эту ссылку.. Используя SYSTEM_UI_FLAG_LOW_PROFILE, вы можете сгладить свою системную панель, а использование onWindowFocusChanged() может сфокусироваться и свернуть ее.

Ответ 9

Ниже код работал у меня -

Вы можете написать его в onCreate() или onResume (если необходимо)

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