В моем приложении есть одно действие, в котором размещаются разные фрагменты для каждого раздела. Недавно я сделал индикатор состояния полупрозрачным, установив fitSystemWindows
в true
, который установил его на цвет фона приложения. Это прекрасно для фрагментов, у которых есть панель инструментов, где цвета совпадают, например:
Однако у одного из моих фрагментов есть фотография и полупрозрачная панель инструментов, поэтому я хотел бы, чтобы фотография занимала пространство строки состояния, а не цвет фона.
Я считаю, что решение состоит в том, чтобы установить fitSystemWindows
в false
только для этого фрагмента и вручную добавить отступ к полупрозрачной панели инструментов. Выполнение этого программно, похоже, не имеет никакого эффекта, что я могу делать неправильно?
Вот мой основной вид деятельности:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_parent_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:fitsSystemWindows="true">
<!-- Container for various fragment layouts, including nav drawer and tool bar -->
</RelativeLayout>
И изнутри моего фрагмента onCreateView():
RelativeLayout daddyLayout = (RelativeLayout)getActivity().findViewById(R.id.main_parent_view);
daddyLayout.setFitsSystemWindows(false);
daddyLayout.invalidate();
Кажется, это не имеет никакого эффекта:
Если я установил fitSystemWindows
в false в main_parent_view
, заполнение строки состояния исчезнет, и оно работает, но, очевидно, влияет на каждый фрагмент.