首页 > 解决方案 > 重新调整片段后的状态栏覆盖工具栏

问题描述

我的活动有 2 个片段,每个片段都使用私人工具栏。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    tools:context=".BlankFragment">

    <include layout="@layout/app_bar" />

</LinearLayout>

我使用以下方法为它们实现了半透明工具栏:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(Color.TRANSPARENT);

在第一个片段上,它按我的预期正常工作。在第二个中,工具栏覆盖在状态栏下方。

在此处输入图像描述 在此处输入图像描述

主要活动

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        getWindow().setStatusBarColor(Color.TRANSPARENT);

        setContentView(R.layout.activity_main);

        BlankFragment  a = new BlankFragment ();
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragment_container, a).commit();

    }

片段空白

@OnClick({R.id.btnNext})
    public void moveToFragment2(){
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        BlankFragment2 ab = new BlankFragment2();
                    ft.add(R.id.fragment_container, ab).commit();
    }

任何帮助,将不胜感激。

标签: androidandroid-layoutandroid-fragmentsandroid-view

解决方案


而不是使用

getWindow().setStatusBarColor(Color.TRANSPARENT);

你可以添加到你的片段

 getActivity().getWindow().setStatusBarColor(getContext().getColor(R.color.YourColor));

并匹配工具栏颜色。

另一种选择是将应用程序设置为全屏,但您将丢失状态栏,如果我是对的,您需要状态栏。代码是这样的:

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

推荐阅读