我有一个带有信用卡报名表格的webview(标准<input type="text" />
字段)。在不同版本的Android中,我会得到不同的键盘。在表单内部,Kit-Kat似乎没有显示上一页 / 下一页键。
没有上一页的示例 / 下一页:
相同的webview,上一页 / 下一页:
答案 0 :(得分:18)
您可以从WebView控制键盘,但正如其他答案所示,它可能无法用于所有键盘。尽管如此,我通常发现大多数主流键盘都实现了我想要的行为。
WebView有一个名为onCreateInputConnection
的方法。您可以挂钩此方法并向inputType
和/或imeOptions
添加(和/或删除)标记。有很多标志可供你使用。
查看EditorInfo选项,特别是IME_FLAG_NAVIGATE_NEXT和IME_FLAG_NAVIGATE_PREVIOUS。请参阅下面的用法(从键盘选项中删除prev / next标志):
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
InputConnection inputConnection = super.onCreateInputConnection(outAttrs);
outAttrs.imeOptions = outAttrs.imeOptions & ~EditorInfo.IME_FLAG_NAVIGATE_NEXT &
~EditorInfo.IME_FLAG_NAVIGATE_PREVIOUS;
return inputConnection;
}
您可以尝试的另一件事是使用InputType标记TYPE_TEXT_FLAG_NO_SUGGESTIONS
隐藏整个建议栏。请参阅下面的示例(将“无建议”标志添加到输入类型):
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
InputConnection inputConnection = super.onCreateInputConnection(outAttrs);
outAttrs.inputType = outAttrs.inputType | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
return inputConnection;
}
还有许多其他标志可用于直接从WebView自定义IME。请将开发人员引荐到链接页面,您应该能够实现大多数键盘上的行为。
答案 1 :(得分:3)
你确实有一些微小的控制,但没有那么多。控件的类型(passowrd,数字,文本)将被发送到软键盘并用于更改事物的显示方式。但是,键盘根据这些选项做出的选择是键盘特定的 - 谷歌键盘的反应与Swype的反应不同,Swype的反应与Swiftkey不同,Swiftkey的反应与三星键盘的反应不同,等等。您无法真正依赖特定的行为。
答案 2 :(得分:1)
在Android Studio 3.0(SDK API 26)上尝试,答案https://stackoverflow.com/a/23462658/3286489崩溃了。搜索后进一步发现这个工作。
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
InputConnection inputConnection = new BaseInputConnection(this, true);
outAttrs.imeOptions = outAttrs.imeOptions & ~EditorInfo.IME_FLAG_NAVIGATE_NEXT &
~EditorInfo.IME_FLAG_NAVIGATE_PREVIOUS;
return inputConnection;
}
和
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
InputConnection inputConnection = new BaseInputConnection(this, true);
outAttrs.inputType = outAttrs.inputType | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
return inputConnection;
}