diff --git a/.changeset/fix-edge-to-edge-decor-fits-system-windows.md b/.changeset/fix-edge-to-edge-decor-fits-system-windows.md new file mode 100644 index 000000000..8ab655963 --- /dev/null +++ b/.changeset/fix-edge-to-edge-decor-fits-system-windows.md @@ -0,0 +1,5 @@ +--- +"@capawesome/capacitor-android-edge-to-edge-support": patch +--- + +fix(android-edge-to-edge-support): opt into edge-to-edge on all API levels diff --git a/packages/android-edge-to-edge-support/android/src/main/java/io/capawesome/capacitorjs/plugins/androidedgetoedgesupport/EdgeToEdge.java b/packages/android-edge-to-edge-support/android/src/main/java/io/capawesome/capacitorjs/plugins/androidedgetoedgesupport/EdgeToEdge.java index a82c10f61..d0cd37710 100644 --- a/packages/android-edge-to-edge-support/android/src/main/java/io/capawesome/capacitorjs/plugins/androidedgetoedgesupport/EdgeToEdge.java +++ b/packages/android-edge-to-edge-support/android/src/main/java/io/capawesome/capacitorjs/plugins/androidedgetoedgesupport/EdgeToEdge.java @@ -9,6 +9,7 @@ import androidx.annotation.Nullable; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; +import androidx.core.view.WindowCompat; import androidx.core.view.WindowInsetsCompat; import com.getcapacitor.Logger; import java.lang.reflect.Constructor; @@ -42,6 +43,12 @@ public EdgeToEdge(@NonNull EdgeToEdgePlugin plugin, @NonNull EdgeToEdgeConfig co } public void enable() { + // Opt into edge-to-edge layout so the DecorView stops auto-consuming system bar + // insets as padding. Without this, inset listeners set by other plugins (notably + // @capacitor/keyboard >= 8.0.2) can perturb the inset dispatch chain and make the + // overlay views end up in the wrong place or with zero height. On Android 15+ + // this is already enforced by the platform. + WindowCompat.setDecorFitsSystemWindows(plugin.getActivity().getWindow(), false); // Create color overlays if they don't exist createColorOverlays(); // Restore previously set colors