重新设置片段后的状态栏叠加工具栏

时间:2019-02-28 21:56:12

标签: 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>

我通过以下方式为他们实现了半透明工具栏:

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

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

enter image description here enter image description here

MainActivity

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

    }

FragmentBlank

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

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

尝试在根unicode中设置str属性

android:fitsSystemWindows="true"

答案 1 :(得分:0)

代替使用

getWindow().setStatusBarColor(Color.TRANSPARENT);

您可以添加到片段

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

并匹配工具栏颜色。

另一种替代方法是将应用设置为全屏显示,但是您会丢失状态栏,如果我对,则需要状态栏。代码是这样的:

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