Ich habe SingleFramgnetActivity
, deren Zweck nur darin besteht, Fragmente darin zu halten und zu ersetzen.Android fitsSystemWindows funktioniert nicht beim Ersetzen von Fragmenten
Layout wie folgt aussieht:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:context=".SingleFragmentActivity"
>
<include layout="@layout/toolbar"/>
<FrameLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
ich die Fragments
innerhalb des FrameLayout ersetzen. Wenn ich die auf Fragment
Layout auf True setzt, reagiert es nicht. Eigentlich funktioniert es nur, wenn Activity
erstellt wird, aber sobald ich die Fragment
innerhalb der FrameLayout
ersetzen, wird der fitsSystemWindows
Parameter ignoriert und das Layout ist unter der Statusleiste und Navigationsleiste.
Ich fand einige solution mit benutzerdefinierten FrameLayout, die veraltete Methoden verwendet, aber aus irgendeinem Grund funktioniert es nicht für mich (das gleiche Ergebnis wie mit normalen FrameLayout) und ich mag auch nicht die Idee, veraltete Methoden zu verwenden.
sind Sie sich bewusst, was fitsSystemWindow tut? –
Ich hoffe, dass ich es richtig verstehe, im Grunde, wenn es auf wahr gesetzt ist, sollten die Ansicht und alle ihre Kinder nicht unter den Systemfenstern als Statusleiste oder Navigationsleiste angezeigt werden. Wenn es auf false gesetzt ist, sollte es unter den Systemfenstern angezeigt werden. Im Grunde kann ich einstellen, dass ich das gesamte Fragment-Layout zwischen Statusleiste und Navigationsleiste (fitsSystemWindow = true) und Hintergrundbild unter der Statusleiste und Navigationsleiste rendern möchte (fitsSystemWindow = false). Ich kann es genau so machen, wie ich es will, bis ich die Fragmente nicht ersetze. – Sandak
Ich hatte das gleiche Problem. Am Ende habe ich ein FrameLayout erstellt, das die Fenstereinfügungen speichert und sie an neue Kinder weiterleitet. Ich habe den Code in einen [Github gist] (https://gist.github.com/PaeP3nguin/4e41f7e76be452fe2f78d3c534fb8dd1) eingefügt. Lass es mich wissen, wenn das für dich funktioniert! – paep3nguin