众所周知,editText是可以通过设置inputType来改变键盘默认弹起的样式。比如全数字,全字母,带.com按钮等等。

 

但是WebView没有这个直接的方法设置inputType。所以没法直接设置。

 

解决方案:

我们产品的需求是 键盘上面要带.com按钮。这个属性如果用ExditText设置就是  inputyType=“textEmailAddress”

 

我翻了一下源码   这个属性是用2个属性或运算得到的。

Text that will be used as an e-mail address.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_ADDRESS}.

我们可以在webview的onCreateInputConnect方法中设置outAttrs属性来达到目的。

override fun onCreateInputConnection(outAttrs: EditorInfo?): InputConnection? {
val connection = super.onCreateInputConnection(outAttrs)
outAttrs?.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS
return connection
}