Android: Inhalte werden im Edge-to-Edge-Modus hinter der App-Leiste ausgeblendetAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Android: Inhalte werden im Edge-to-Edge-Modus hinter der App-Leiste ausgeblendet

Post by Anonymous »

Ich versuche fleißig, meine App auf API 35 mit Edge-to-Edge-Unterstützung zu aktualisieren. Ich habe versucht, der offiziellen Android-Dokumentation hier zu folgen: https://developer.android.com/develop/u ... ge-to-edge
Allerdings stecke ich fest. Die oben genannte Seite enthält Dokumentation zum Reagieren auf Einfügungen für Systemleisten, Ausschnitte und Gesten. Es sagt jedoch nichts darüber aus, wie die Höhe der App-Leiste angepasst werden soll.
In meiner App habe ich eine App-Leiste mit einem LinearLayout (das eine Textansicht und einige Schaltflächen enthält) darunter. Auf älteren Android-Versionen ist das Layout völlig in Ordnung. Bei Edge-to-Edge ist jedoch der oberste Zentimeter des Inhalts hinter der App-Leiste verborgen. Hier ist ein Screenshot:
Nebeneinander Screenshots des erwarteten und tatsächlichen Verhaltens
Hier ist der Code, den ich verwende, um Kante zu Kante zu kompensieren: (Wrapper ist der Name meines LinearLayout-Objekts)

Code: Select all

        ViewCompat.setOnApplyWindowInsetsListener(wrapper, (v, windowInsets) -> {
Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(insets.left, insets.top, insets.right, insets.bottom);
return WindowInsetsCompat.CONSUMED;
});
Ich habe es auch versucht, kam aber zum gleichen Ergebnis:

Code: Select all

        ViewCompat.setOnApplyWindowInsetsListener(wrapper, (v, windowInsets) -> {
Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars());
ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
mlp.leftMargin = insets.left;
mlp.topMargin = insets.top;
mlp.rightMargin = insets.right;
mlp.bottomMargin = insets.bottom;
v.setLayoutParams(mlp);
return WindowInsetsCompat.CONSUMED;
});
Wenn ich den Wert von insets.top protokolliere, ist er immer Null. Ich würde hoffen, dass insets.top die Höhe der App-Leiste einbezieht, aber das ist nicht der Fall. Ich habe keine guten Lösungen für dieses Problem gefunden. Ich kann einen Versatz für den oberen Rand fest codieren, aber das ist keine dauerhafte Lösung, da es nur für ein Telefonmodell funktioniert.
Ist dieses Problem schon bei jemandem aufgetreten? Ich würde mich über jeden Rat freuen, den Sie mir geben könnten.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post