Я пытаюсь создать приложение.Единственный фрагмент приложения имеет прозрачную панель инструментов и строку состояния.
Я должен эта задача программно.Я пишу код ниже, чтобы организовать прозрачность строки состояния:
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
Это не ЖЕЛТЫЙ!Как организовать прозрачность строки состояния на основе фрагментов?