【发布时间】:2017-01-18 14:08:47
【问题描述】:
我们有一个 Xamarin 应用程序 (Android),它在某个阶段打开一个 Web 视图(Webkit.Webview 不是 Forms.Webview)。这会将用户引导至为我们设置的第三方网站上的页面。
首先 - 在某些输入字段中显示的键盘是错误的 - 我们期待一个可关闭的键盘(即底角的“完成”,而不是“提交”)。我知道这可以改变,但不确定这样做的正确方法是什么。是否必须是更改的网页上的元数据/文本输入?如果是这样 - 页面 html 上的每个文本框条目需要修改什么?只是类型?即:
<input type="email">
其次,与其等待第三方修复页面,有没有办法可以强制 webview 始终打开某种键盘类型?
我们可以选择拦截键盘按键并尝试在返回时关闭键盘。但不希望在其中插入一个拦截每个按键的黑客。
感谢帮助,不知道前进的方向是什么。
谢谢
【问题讨论】:
-
关于强制键盘类型的第二个问题,看起来this 帖子至少能够强制更改完成按钮文本。虽然从未尝试过。我知道,对于您的第一个问题,不同版本的 Android 在处理输入类型的方式和/或是否完全支持它们方面会大不相同。这是非常不幸的。您定位的最低 Android 版本是什么?
-
目前最低为 4.2.2。我会通读你提到的帖子,看看我想出了什么。我认为扩展 Webview 是前进的方向,只是想知道我需要设置它的哪个部分来强制使用特定的软键盘,或者我需要修改网站的哪些部分
-
@hvaughan3 - 那篇文章帮助很大,我们现在已经设法找到一个可以接受的折衷方案。分配 outAttrs.ImeOptions = (ImeFlags)ImeAction.Next;但是,我希望像设备软按钮一样关闭键盘。在枚举中看不到选项。有任何想法吗?干杯
-
问题是
ImeAction.Next用于take the user to the next input 而不是关闭键盘。我想知道您是否可以听到按下 Next 按钮并自己手动关闭键盘......可能值得一试。如果您需要手动关闭键盘的代码,请告诉我,尽管我从未尝试通过WebView尝试使用关闭代码来对抗键盘启动 -
对,不幸的是,您需要在 JavaScript 代码或 C# 代码中捕获按键。也许您可以在
<input>上将 JavaScript 注入 WebView,它会查找要按下的回车键并移除焦点..?不确定这是否会关闭键盘,并且它也是一种黑客行为。如果键盘被关闭,添加ImeFlags.NoEnterAction有什么不同吗?
标签: c# android xamarin webview