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;
});
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;
});
Ist dieses Problem schon bei jemandem aufgetreten? Ich würde mich über jeden Rat freuen, den Sie mir geben könnten.
Mobile version