Android 重新绘制片段后的状态栏覆盖工具栏

Android 重新绘制片段后的状态栏覆盖工具栏,android,android-layout,android-fragments,android-view,Android,Android Layout,Android Fragments,Android View,我的活动有2个片段,每个片段都使用一个专用工具栏 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" tools:context=".BlankFragment"> <include layout="@layout/app_bar" /> </LinearLayout> 在第一个片段中,它像我预期的那样正常工作。在第二个工具栏上,工具栏覆盖在状态

我的活动有2个片段,每个片段都使用一个专用工具栏

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

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

</LinearLayout>
在第一个片段中,它像我预期的那样正常工作。在第二个工具栏上,工具栏覆盖在状态栏下

主要活动

@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();
    }

任何帮助都将不胜感激。

请尝试在root
视图组中设置
android:fitsystemwindows=“true”
属性

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">
    ...
</LinearLayout>

...
而不是使用

getWindow().setStatusBarColor(Color.TRANSPARENT);
您可以添加到您的片段中

 getActivity().getWindow().setStatusBarColor(getContext().getColor(R.color.YourColor));
并匹配工具栏颜色

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

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