2 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
創(chuàng)建自定義 webview,覆蓋 onCreateInputConnection 以設(shè)置輸入時(shí)間選項(xiàng)和鍵盤輸入類型,覆蓋 dispatchKeyEvent 以獲取關(guān)鍵事件將其過濾掉
例子 :
class MyWeb@JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0) : WebView(context, attrs, defStyleAttr) {
override fun onCreateInputConnection(outAttrs: EditorInfo): InputConnection {
val inputConnection = BaseInputConnection(this, false)
return inputConnection
}
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
super.dispatchKeyEvent(event)
val dispatchFirst = super.dispatchKeyEvent(event)
if (event.action == KeyEvent.ACTION_UP) {
when (event.keyCode) {
KeyEvent.KEYCODE_ENTER -> {
Toast.makeText(context,"Hii",Toast.LENGTH_LONG).show()
//callback?.onEnter()
}
}
}
return dispatchFirst
}
}
和XML
<com.example.MyWeb
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:id="@+id/web"
/>`
資料來源:https ://medium.com/@elye.project/managing-keyboard-on-webview-d2e89109d106

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
按鍵事件幾乎從不從軟鍵盤發(fā)送,它們使用更直接的方法。
Android 鍵盤的工作方式是綁定到視圖。該視圖必須實(shí)現(xiàn) getInputConnection() 返回一個(gè)對象,該對象將允許鍵盤應(yīng)用程序調(diào)用(通過 AIDL)函數(shù)。這些功能之一稱為“操作鍵”(完成按鈕)。在默認(rèn)的 InputConnection 實(shí)現(xiàn)中,這將調(diào)用注冊到綁定視圖的偵聽器。
由于您在這里處理網(wǎng)絡(luò)視圖 - 我認(rèn)為沒有辦法直接捕獲它。您可以嘗試將 WebView 子類化為 ActionKeyWebView。添加一個(gè)函數(shù)來注冊一個(gè)動作鍵監(jiān)聽器接口。覆蓋 getInputConnection 以返回您自己的 InputConnectionWrapper 子類,并包裝 super.getInputConnection()。然后覆蓋 performEditorAction 以調(diào)用為 webview 注冊的任何偵聽器。它有相當(dāng)多的代碼,但它應(yīng)該可以工作。
添加回答
舉報(bào)