小编fre*_*dig的帖子

Android - 在 Viewpager 中的 Fragment 之间切换状态栏透明度

我已经用尽了我发现的关于以编程方式更改状态栏颜色的所有帖子,但没有一个涉及这个特定案例。

我有一个包含 ViewPager 和 BottomNavigationView 的活动。ViewPager 包含三个 Fragment,而 BottomNavigationView 在关闭平滑滚动的情况下在它们之间移动。

由于三个 Fragment 中的第一个是地图,我希望在显示第一个 Fragment 时状态栏是透明的,但在其他两个 Fragment 上恢复为不透明颜色。

这是一些代码,显示了我如何尝试设置和恢复状态栏状态。

private class TabSelectedObserver implements Observer<Integer> {
    @Override
    public void onChanged(@Nullable Integer selectedTab) {
        if (selectedTab != null) {
            activityMainBinding.mainPager.setCurrentItem(selectedTab, false);
            switch (selectedTab) {
                case 0:
                    applyTransparentStatusBarTheme();
                    break;
                default:
                    applyOpaqueStatusBarTheme();
                    break;
            }
        }
    }
}

private void applyTransparentStatusBarTheme() {
    hideSystemUi();
    getWindow().setStatusBarColor(ContextCompat.getColor(this, android.R.color.transparent));
}

private void applyOpaqueStatusBarTheme() {
    showSystemUi();
    getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.rippallete_700));
}

private void hideSystemUi() {
    // Set flags for hiding status bar and …
Run Code Online (Sandbox Code Playgroud)

transparency android statusbar android-fragments

5
推荐指数
1
解决办法
873
查看次数