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