【问题标题】:Android webView touchEventsAndroid webView 触摸事件
【发布时间】:2016-02-12 19:47:43
【问题描述】:

我有一个正在尝试与 android 交互的 webapp。获取 webview 来显示页面非常容易,但是页面使用屏幕键盘。如果页面上只有一个输入,那么设置很容易

android:focusableInTouchMode="false" 

在 web 视图中,但是有一些地方存在多个输入,这将禁用选择任何输入的能力(页面上的第一个被自动选择)。

是否可以扩展和覆盖 webView 以便能够选择输入但不能打开软键盘?

我也看过 this example,但我认为这不适用于 webview。

编辑:

为了帮助澄清,我可以用 myWebView.setOnTouchListener(...) 覆盖,并在测试中这样做,这很好,因为它不允许显示软键盘,但它也不会让任何其他事情发生IE。输入选择。理想情况下,除了出现软键盘之外,一切都会发生。 (是的,我尝试过其他方法,例如

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

【问题讨论】:

  • 你是说如果你设置了android:focusableInTouchMode="false",那么这会禁用在WebView内部中导航基于HTML的控件的能力?
  • 不,它使整个 webview 不具有焦点,因此系统不会响应基于 html 的字段作为焦点。它仍然可以导航,因为里面的控件是 javascript。

标签: android webview android-softkeyboard ontouchlistener touch-event


【解决方案1】:

我觉得我的问题有点含糊,因为我在研究了几个小时后不知所措。

我的最终目标是能够使用带有多个输入字段的屏幕键盘显示网页。问题是,只要焦点位于输入字段上,就会显示 android softKeyboard。

我尝试了多种解决方法,问题中列出的一种方法不起作用,因为我无法选择任何输入,因为未注册触摸命令。

我尝试覆盖 onTouch,但是键盘在“向上”触摸后显示,因此不可能有默认行为并且仍然拦截和禁用键盘。

对我的问题有效的解决方案是扩展 WebView 类,然后覆盖“onCreateInputConnection”。这是 android 解释 html 输入字段的“类型”的地方。问题是 html 对此没有“null”类型,因此 android 将始终根据输入类型显示某种键盘。然而,Android 确实有一个 null 输入类型,它告诉键盘这里不需要输入。

 @Override
 public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
    BaseInputConnection fic = new BaseInputConnection(this, true);
    outAttrs.actionLabel = null;
    outAttrs.inputType = InputType.TYPE_NULL;
    return fic;
}

这个被覆盖的方法是我的 webview 完全禁用我所有文本字段的输入所需要的。

注意:这也会禁用附加的硬件键盘输入...在我的情况下不是问题,但是我有兴趣了解那里的工作。

【讨论】:

    猜你喜欢
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    相关资源
    最近更新 更多