Режим иммерсивного перехода активности - PullRequest
1 голос
/ 07 октября 2019

Я успешно установил приложение в режиме погружения, потому что хочу скрыть строку состояния (на верхнем экране) и панель навигации (на нижнем экране). Проблема в том, что при смене активности нижняя полоска автоматически возникает и сразу после нее спускается и исчезает. Я хочу этого избежать.

Все действия имеют стиль AppTheme.NoActionBar, установленный в манифесте:

android:theme="@style/AppTheme.NoActionBar"

А в OnCreate все имеют следующий код:

getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(
                new ViewTreeObserver.OnGlobalLayoutListener() {
                    @Override
                    public void onGlobalLayout() { 
                 GlobalFunctions.setFullscreen(getWindow().getDecorView());
                    }
                });

Где это функция setFullscreen () :

public static void setFullscreen(View decorView){
        int ui_Options = 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;
        decorView.setSystemUiVisibility(ui_Options);
    }

Должны ли я установить эти атрибуты до включения onCreate в жизненном цикле активности? или есть другие решения? или я неправильно реализовал режим погружения?

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Вам не нужно устанавливать прослушиватель глобального макета. Просто вызовите функцию setFullscreen до super.onCreate()

0 голосов
/ 07 октября 2019

Используйте этот код в теге манифеста активности

android:theme="@style/AppFullScreenTheme"

создайте этот стиль в style.xml

    <style name="AppFullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:fontFamily">@font/montserrat</item>
    <item name="android:windowContentOverlay">@null</item>
 </style>

, в противном случае используйте его в своем классе деятельности

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

это сработало для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...