Android webView:使用input type=text时,是否可以默认设置数字键盘为首选?

7
我们有一个应用程序,使用webview来展示一些HTML页面。这个HTML页面有输入类型,并且我们使用input-type = number,因为我们只接受带小数点的数字。
所以,在此字段中,会出现具有小数点的数字安卓键盘。
问题是三星设备更新到Android 4.3后,数字键盘中的小数点消失了。
所以,我们需要将常用键盘放置在适当位置,以便有小数点。问题是默认情况下,常用键盘会出现字母,而我们希望键盘默认出现在数字部分,以使更加用户友好。像这样:
我们如何实现这一点?
编辑:也许我没有解释清楚。问题出现在HTML页面上,而不是在android TextView上。因此,所有android:type答案都没有用处。

你能看一下这个链接是否解决了你的问题吗?http://stackoverflow.com/questions/19208491/edittext-with-inputfilter-assigned-decimal-separator-hidden-in-landscape-mode - PedroAGSantos
@subspider 这是一个与TextView相关的解决方案,而不是HTML输入类型。 - isra60
2个回答

6
继承 WebView 并覆盖 onCreateInputConnection 方法可实现将小数分隔符添加到软键盘中。另一种选择是将 HTML 输入类型从 "number" 更改为 "tel",但这样允许用户输入其他字符,如 "*" 和 "#"。这似乎是三星 4.3 特定的问题。
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {

    InputConnection connection = super.onCreateInputConnection(outAttrs);

    if ((outAttrs.inputType & InputType.TYPE_CLASS_NUMBER) == InputType.TYPE_CLASS_NUMBER)
    {
        outAttrs.inputType |= InputType.TYPE_NUMBER_FLAG_DECIMAL;
    }

    return connection;
}

0

你可以在你使用的WebView布局的类文件中覆盖设置键盘为InputType number:遵循以下代码

override fun onCreateInputConnection(outAttrs: EditorInfo): InputConnection {
    val inputConnection = BaseInputConnection(this, false)
    outAttrs.imeOptions = EditorInfo.IME_ACTION_DONE
    outAttrs.inputType = EditorInfo.TYPE_CLASS_NUMBER
    return inputConnection
}

这可能会对你有所帮助


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接