From 863142902c7a9714d95f5bacde45067babf82dbd Mon Sep 17 00:00:00 2001 From: polv Date: Sat, 12 Sep 2026 17:58:28 +0700 Subject: [PATCH] webview android insets https://github.com/tauri-apps/tauri/issues/11475 --- .../.vitepress/theme/components/VocabQuiz.vue | 4 +-- docs/.vitepress/theme/custom.css | 7 ---- .../java/cc/polv/ko_grammar/MainActivity.kt | 33 +++++++++++++++++++ 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/docs/.vitepress/theme/components/VocabQuiz.vue b/docs/.vitepress/theme/components/VocabQuiz.vue index a549cbe..5c599e0 100644 --- a/docs/.vitepress/theme/components/VocabQuiz.vue +++ b/docs/.vitepress/theme/components/VocabQuiz.vue @@ -661,7 +661,7 @@ onBeforeUnmount(() => { } .modal { - --margin-top: calc(120px + env(safe-area-inset-top)); + --margin-top: 120px; position: fixed; top: 50%; @@ -684,7 +684,7 @@ onBeforeUnmount(() => { textarea { width: 100%; - max-height: calc(90vh - var(--margin-top) - env(safe-area-inset-bottom)); + max-height: calc(90vh - var(--margin-top)); padding: 1em; border-radius: 0 0 0.5em 0.5em; font-family: sans-serif; diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css index 7a9c91e..b54e42f 100644 --- a/docs/.vitepress/theme/custom.css +++ b/docs/.vitepress/theme/custom.css @@ -1,10 +1,3 @@ -body { - padding-top: env(safe-area-inset-top); - padding-bottom: env(safe-area-inset-bottom); - padding-left: env(safe-area-inset-left); - padding-right: env(safe-area-inset-right); -} - .spoiler:not(:hover) { filter: blur(5px); } diff --git a/src-tauri/gen/android/app/src/main/java/cc/polv/ko_grammar/MainActivity.kt b/src-tauri/gen/android/app/src/main/java/cc/polv/ko_grammar/MainActivity.kt index 7b795dd..54b8a77 100644 --- a/src-tauri/gen/android/app/src/main/java/cc/polv/ko_grammar/MainActivity.kt +++ b/src-tauri/gen/android/app/src/main/java/cc/polv/ko_grammar/MainActivity.kt @@ -1,11 +1,44 @@ package cc.polv.ko_grammar import android.os.Bundle +import android.view.View +import android.webkit.WebView import androidx.activity.enableEdgeToEdge +import androidx.activity.result.contract.ActivityResultContracts +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat class MainActivity : TauriActivity() { override fun onCreate(savedInstanceState: Bundle?) { enableEdgeToEdge() super.onCreate(savedInstanceState) + + val rootView: View = findViewById(android.R.id.content) + + ViewCompat.setOnApplyWindowInsetsListener(rootView) { v, insets -> + val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + val imeVisible = insets.isVisible(WindowInsetsCompat.Type.ime()) + val imeHeight = insets.getInsets(WindowInsetsCompat.Type.ime()).bottom + + val bottomPadding = if (imeVisible) imeHeight else systemBars.bottom + + v.setPadding( + systemBars.left, + systemBars.top, + systemBars.right, + bottomPadding + ) + insets + } + } + + override fun onWebViewCreate(webView: WebView) { + super.onWebViewCreate(webView) + + webView.setBackgroundColor(0x00000000) + + webView.fitsSystemWindows = true + + android.util.Log.i("MainActivity", "WebView created, waiting for Rust hide() call...") } }