Панель навигации планшета Android не скроется

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

У меня есть простой макет, который показывает WebView:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:id="@+id/layout" >

    <WebView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</RelativeLayout>

Код, который я использую при запуске приложения:

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
    web.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
    layout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

Но это не скрывает панель навигации.

Я добавил...

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

... к моей деятельности тоже.

Как мне этого добиться?

3 ответа

Решение

Вы не можете надолго скрыть системную панель на планшете.

SYSTEM_UI_FLAG_HIDE_NAVIGATION на Android 4.1 и выше будет скрыта системная панель, но она появится снова, как только пользователь что-нибудь сделает.

Вы можете скрыть панель навигации, попробуйте это

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

Может быть, это поможет:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getWindow().setUiOptions(//
    View.SYSTEM_UI_FLAG_FULLSCREEN|//
    View.SYSTEM_UI_FLAG_IMMERSIVE|//
    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    setContentView(R.layout.main);

    findViewById(R.id.main).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            v.setSystemUiVisibility(//
                View.SYSTEM_UI_FLAG_FULLSCREEN|//
                View.SYSTEM_UI_FLAG_IMMERSIVE|//
                View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        }
    });
}

Вы не можете скрыть панель навигации в рамках данного каркаса. Тем не менее, есть обходной вариант, если у вас есть возможность рутировать устройство:

  1. Корневое устройство

  2. Установите и запустите Busybox

  3. Установить HideBar

В HideBar есть опция для запуска в режиме "Киоск", в котором нет возможности повторно отобразить панель навигации. Излишне говорить, что вам действительно нужно быть осторожным с этим.


Другие вопросы по тегам