From 813771abd2915aba4ab7a2ae73428c93624c4dbf Mon Sep 17 00:00:00 2001 From: haomingming Date: Mon, 9 Nov 2026 10:36:42 +0800 Subject: [PATCH] 4k --- app/build.gradle.kts | 4 ++-- app/src/main/java/com/tv/browser/BrowserActivity.kt | 5 ++++- app/src/main/java/com/tv/browser/RemoteWebView.kt | 10 ++-------- app/src/main/res/layout/activity_browser.xml | 1 + 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 388107c..bfd8afb 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -11,8 +11,8 @@ android { applicationId = "com.tv.browser" minSdk = 21 targetSdk = 34 - versionCode = 11 - versionName = "4.5.0" + versionCode = 12 + versionName = "5.0.0" } buildTypes { diff --git a/app/src/main/java/com/tv/browser/BrowserActivity.kt b/app/src/main/java/com/tv/browser/BrowserActivity.kt index 5db53aa..8fab779 100644 --- a/app/src/main/java/com/tv/browser/BrowserActivity.kt +++ b/app/src/main/java/com/tv/browser/BrowserActivity.kt @@ -565,7 +565,10 @@ class BrowserActivity : AppCompatActivity(), RemoteControlCallback { cursorOverlay?.post { initCursorPosition() } // 不监听 overlay 的 layout 变化,避免底部左右移动时 webView.scrollBy 触发布局导致 clampCursorToBounds 错误改动 cursorY;全屏切换等时由调用方主动 clamp - webView.setOnFocusChangeListener { _, hasFocus -> if (hasFocus) hideKeyboard() } + // 仅当焦点切到网页非输入区域时收起地址栏残留的软键盘;若用户直接点击网页内的输入框(onCheckIsTextEditor=true),不能收起键盘 + webView.setOnFocusChangeListener { _, hasFocus -> + if (hasFocus && !webView.onCheckIsTextEditor()) hideKeyboard() + } // 弹窗(DialogFragment)显示时隐藏光标、销毁时恢复,避免弹窗遮挡光标(按弹窗对象去重,重复回调也不会累积) dialogCursorLifecycleCallbacks = object : FragmentManager.FragmentLifecycleCallbacks() { diff --git a/app/src/main/java/com/tv/browser/RemoteWebView.kt b/app/src/main/java/com/tv/browser/RemoteWebView.kt index ec0ca7c..c937a33 100644 --- a/app/src/main/java/com/tv/browser/RemoteWebView.kt +++ b/app/src/main/java/com/tv/browser/RemoteWebView.kt @@ -5,9 +5,8 @@ import android.util.AttributeSet import android.webkit.WebView /** - * TV 场景专用 WebView: - * - 不作为文本编辑器,避免系统软键盘在网页输入框获得焦点时弹出 - * - 文字输入统一通过遥控网页转发 + * 自定义 WebView: + * - 保留系统默认的 onCheckIsTextEditor() 行为(仅在网页内 input/textarea 等可编辑元素聚焦时返回 true,以正常唤起手机/系统输入法) * - 暴露滚动监听,支持向下滚动自动收起工具栏,向上滚动自动唤出 */ class RemoteWebView @JvmOverloads constructor( @@ -19,11 +18,6 @@ class RemoteWebView @JvmOverloads constructor( /** 滚动变化监听:(scrollX, scrollY, oldScrollX, oldScrollY) */ var onScrollChangeListener: ((Int, Int, Int, Int) -> Unit)? = null - override fun onCheckIsTextEditor(): Boolean { - // 告诉系统这不是文本编辑控件,避免为网页内的 input/textarea 弹出软键盘 - return false - } - override fun onScrollChanged(l: Int, t: Int, oldl: Int, oldt: Int) { super.onScrollChanged(l, t, oldl, oldt) onScrollChangeListener?.invoke(l, t, oldl, oldt) diff --git a/app/src/main/res/layout/activity_browser.xml b/app/src/main/res/layout/activity_browser.xml index f61c781..fac00c8 100644 --- a/app/src/main/res/layout/activity_browser.xml +++ b/app/src/main/res/layout/activity_browser.xml @@ -283,6 +283,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:focusable="true" + android:focusableInTouchMode="true" android:nextFocusUp="@id/urlBar" />