From dd3ffa11a8b2eea670dc23012b71066b5f4772bd Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Tue, 6 Jan 2026 13:57:45 -0500 Subject: [PATCH] fix: Android demo app fills viewport Ensure the editor HTML expands to fill the viewport height. Set explicit `layoutParams` with MATCH_PARENT on `GutenbergView` when used inside Compose's `AndroidView`. This fixes CSS viewport units (`vh`, `vw`, `dvh`) calculating as zero. When a WebView is embedded in `AndroidView` without explicit `layoutParams`, the WebView's initial size is calculated as zero during the first composition pass. This causes CSS viewport units to resolve to 0px, even though JavaScript APIs like `window.innerHeight` return correct values. Setting `MATCH_PARENT` `layoutParams` ensures the WebView knows its intended size constraints before loading content, allowing CSS viewport calculations to work correctly. This is a known issue with WebView in Jetpack Compose: - https://issuetracker.google.com/issues/238245846 - https://github.com/google/accompanist/issues/1224 --- .../main/java/com/example/gutenbergkit/EditorActivity.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/android/app/src/main/java/com/example/gutenbergkit/EditorActivity.kt b/android/app/src/main/java/com/example/gutenbergkit/EditorActivity.kt index f93fce74..e0e9a706 100644 --- a/android/app/src/main/java/com/example/gutenbergkit/EditorActivity.kt +++ b/android/app/src/main/java/com/example/gutenbergkit/EditorActivity.kt @@ -2,6 +2,7 @@ package com.example.gutenbergkit import android.content.Intent import android.os.Bundle +import android.view.ViewGroup import android.webkit.WebView import android.content.pm.ApplicationInfo import androidx.activity.ComponentActivity @@ -209,6 +210,12 @@ fun EditorScreen( AndroidView( factory = { context -> GutenbergView(context).apply { + // Explicitly set layoutParams to MATCH_PARENT to ensure proper + // viewport dimension communication to the WebView for CSS units. + layoutParams = ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT + ) gutenbergViewRef = this setModalDialogStateListener(object : GutenbergView.ModalDialogStateListener { override fun onModalDialogOpened(dialogType: String) {