Панель инструментов наложения строки состояния после изменения фрагмента - PullRequest
0 голосов
/ 01 марта 2019

Моя активность имеет 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 голосов
/ 02 марта 2019

Вместо использования

getWindow().setStatusBarColor(Color.TRANSPARENT);

вы можете добавить к своим фрагментам

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

и подобрать цвет панели инструментов.

Другой вариант - установить приложение набыть полноэкранным, но вы потеряете строку состояния, и если я прав, вы хотите строку состояния.Код такой:

  getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
0 голосов
/ 01 марта 2019

Попробуйте установить android:fitsSystemWindows="true" атрибут в корне ViewGroup

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