Android Fragments Android中特定片段的透明状态栏

91zkwejq  于 12个月前  发布在  Android
关注(0)|答案(2)|浏览(175)

在我的应用程序中有一个包含四个片段的Activity。我想让四个片段中的一个片段变得透明。首页片段是好的,因为我想要的,但状态栏也消失的其他片段,我不想要的。我想显示其他3个片段的状态栏。

private void transparentStatusBar() {
    Window window = getActivity().getWindow();
    window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    window.setStatusBarColor(Color.TRANSPARENT);

}
bfrts1fy

bfrts1fy1#

当你设置透明状态栏时,它总是引用Activity,所以在这个Activity中的所有片段都将有透明的状态栏。在这种情况下,您可以在切换到所需的透明状态栏片段时设置和删除透明状态栏。

dfty9e19

dfty9e192#

您可以在Activity中拥有这样的函数,并从所需的片段中调用它

fun transparentStatusBar(transparent: Boolean) {
    if (transparent) {
        WindowCompat.setDecorFitsSystemWindows(window, false)
        window.statusBarColor = Color.TRANSPARENT
    } else {
        WindowCompat.setDecorFitsSystemWindows(window, true)
        window.statusBarColor = ColorHelper.resolveColorAttribute(this, R.attr.statusBarBackground)
    }
}

相关问题