【问题标题】:Status bar overlay Toolbar after repacing a fragment替换片段后的状态栏覆盖工具栏
【发布时间】:2019-02-28 21:56:11
【问题描述】:

我的活动有 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();
    }

任何帮助将不胜感激。

【问题讨论】:

    标签: android android-layout android-fragments android-view


    【解决方案1】:

    而不是使用

    getWindow().setStatusBarColor(Color.TRANSPARENT);
    

    你可以添加到你的片段中

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

    并匹配工具栏颜色。

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

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

    【讨论】:

      【解决方案2】:

      尝试在根ViewGroup中设置android:fitsSystemWindows="true"属性

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

      【讨论】:

        猜你喜欢
        • 2015-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-08
        • 2018-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多