From 9851743770909686532d711aa7f318a990a04da0 Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期三, 02 九月 2026 09:40:02 +0800
Subject: [PATCH] 修复问题
---
mylibrary/src/main/java/com/example/mylibrary/WebPayActivity.kt | 43 +++++++++++++++++++++++++------------------
mylibrary/src/main/AndroidManifest.xml | 1 +
2 files changed, 26 insertions(+), 18 deletions(-)
diff --git a/mylibrary/src/main/AndroidManifest.xml b/mylibrary/src/main/AndroidManifest.xml
index 34e8003..02ff32b 100644
--- a/mylibrary/src/main/AndroidManifest.xml
+++ b/mylibrary/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
android:name=".WebPayActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
android:configChanges="orientation|screenSize|smallestScreenSize|keyboardHidden"
+ android:windowSoftInputMode="adjustResize"
android:exported="false" />
</application>
diff --git a/mylibrary/src/main/java/com/example/mylibrary/WebPayActivity.kt b/mylibrary/src/main/java/com/example/mylibrary/WebPayActivity.kt
index 86d4cf2..3caccd0 100644
--- a/mylibrary/src/main/java/com/example/mylibrary/WebPayActivity.kt
+++ b/mylibrary/src/main/java/com/example/mylibrary/WebPayActivity.kt
@@ -12,7 +12,9 @@
import android.os.Bundle
import android.util.Log
import android.view.View
+import android.view.WindowInsets
import android.view.WindowManager
+import android.view.inputmethod.InputMethodManager
import android.webkit.CookieManager
import android.webkit.JavascriptInterface
import android.webkit.WebChromeClient
@@ -241,17 +243,30 @@
// 1. 从 DecorView 移除全屏视图
val decorView = window.decorView as FrameLayout
decorView.removeView(customView)
-
- // 2. 清理状态
mCustomView = null
mCustomViewCallback?.onCustomViewHidden()
mCustomViewCallback = null
- // 3. 恢复系统 UI
- showSystemUI()
+ // 2. 彻底清理全屏 Window flag(关键!)
+ // 很多人只恢复了 systemUiVisibility,但忘了清除 Window flag
+ window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
+ window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
+ window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION)
- // 4. 恢复原始屏幕方向
+ // 3. 恢复非全屏的 UI 可见性
+ window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE
+
+ // 4. 恢复屏幕方向
requestedOrientation = mOriginalOrientation
+
+ // 5. 关键:重建 IME 关联
+ // 先让 WebView 完全失去焦点
+ webView.clearFocus()
+
+ // 6. 下一帧再重新获得焦点,触发 IMM 重建 served view
+ webView.post {
+ webView.requestFocus()
+ }
}
}
webView.webViewClient = object : WebViewClient() {
@@ -289,21 +304,13 @@
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_FULLSCREEN
- or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
+ or View.SYSTEM_UI_FLAG_IMMERSIVE // 不再使用 STICKY
)
} else {
- window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
- }
- }
-
- /**
- * 恢复系统 UI 显示
- */
- private fun showSystemUI() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- window.decorView.systemUiVisibility = mOriginalSystemUiVisibility
- } else {
- window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
+ window.setFlags(
+ WindowManager.LayoutParams.FLAG_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN
+ )
}
}
--
Gitblit v1.7.1