Android - установить прозрачный статусбар

Я пытаюсь создать приложение. Единственный фрагмент приложения имеет прозрачную панель инструментов и строку состояния.

Я должен эту задачу программно. Я пишу ниже код для обеспечения прозрачности строки состояния:

void translucentStatusBar(Activity activity) {
    Window window = activity.getWindow();
    int flags = window.getDecorView().getSystemUiVisibility();
    flags |= WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
    flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
    window.addFlags(flags);

    // ID_ANDROID_CONTENT = The ID that the main layout in the XML layout file should have.
    ViewGroup mContentView = window.findViewById(Window.ID_ANDROID_CONTENT);
    View mChildView = mContentView.getChildAt(0);
    if (mChildView != null) {
        mChildView.setFitsSystemWindows(false);
        ViewCompat.requestApplyInsets(mChildView);
    }
}

void revertTranslucentStatusBar(Activity activity) {
    Window window = activity.getWindow();
    int flags = window.getDecorView().getSystemUiVisibility();
    flags &= ~WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
    flags &= ~WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;

    window.clearFlags(flags);
    // ID_ANDROID_CONTENT = The ID that the main layout in the XML layout file should have.
    ViewGroup mContentView = window.findViewById(Window.ID_ANDROID_CONTENT);
    View mChildView = mContentView.getChildAt(0);
    if (mChildView != null) {
        mChildView.setFitsSystemWindows(true);
        ViewCompat.requestApplyInsets(mChildView);
    }
    if(Build.VERSION.SDK_INT >= 21)
        window.setStatusBarColor(Color.YELLOW);
}

Fragment1 onViewCreated вызывает функцию translucentStatusBar, следующая страница - Fragment2. Fragment1 в порядке.

И onViewCreated Fragment2 вызывает функцию revertTranslucentStatusBar.

Fragment1

FRAGMENT2

Это не ЖЕЛТЫЙ! Как организовать прозрачность строки состояния на основе фрагментов?

0 ответов

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