【问题标题】:Is it possible to define a suggestion list in webview applications?是否可以在 webview 应用程序中定义建议列表?
【发布时间】:2012-05-08 09:37:03
【问题描述】:

在基于 webview 的应用程序的文本类型输入元素中输入字符串时,虚拟键盘上方会显示可能的单词列表。

在我的应用程序中,不允许用户输入任意单词,而只有数据库中的单词和短语是合法的。

所以,我想从我的 phonegap 应用程序中设置单词列表并禁用自动创建此列表。

问:这是否可以创建列表 - 以及如何创建?

(这是一个 phonegap 应用程序,我正在 android 上进行测试,但这可能是不同平台上的 webview/文本输入字段的问题)

编辑:
刚刚发现(是的,我是 android 开发新手),可以通过以下方式禁用建议列表:设置/语言和键盘/Android 键盘/显示建议。

当然,此设置应仅针对应用进行,从应用内部进行,无需用户交互,也不更改应用外部的任何内容。

有没有机会完成这项工作?

编辑 2:
我没有禁用建议列表,而是尝试使用它。 InputMethodManager 的 displayCompletions 方法听起来很有希望,所以我尝试了以下代码:

...
// data member
InputMethodManager mInputMethodManager = null;
...

    ...
    // initialized
    mInputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
    ...

public void showSuggestions(String[] words) {
    Log.d(TAG, "showSuggestions (in Java!): " + words.length);  // yes, this code is executed
    CompletionInfo[] completions = new CompletionInfo[words.length];
    for (int i=0; i<words.length; i++) {
        completions[i] = new CompletionInfo(i, i, words[i]);    // no idea, what the 2 extra integers mean
    }
    mInputMethodManager.displayCompletions(mView, completions);
}

只要有可用的新列表(在输入更改并且服务器响应请求之后),就会执行该方法。

但是,什么都没有改变 - 内置机制仍在做它不利的工作。

【问题讨论】:

    标签: android cordova webview textinput


    【解决方案1】:

    为什么不在 jQuery UI 中使用自动完成功能。

    http://jqueryui.com/demos/autocomplete/

    另外,用 JavaScript 自己编写它并不难。

    http://www.javascript-examples.com/autocomplete-demo/

    【讨论】:

    • 是的,这是可能的。其实我已经这样做了。剩下的问题是,无用的建议列表仍然存在,浪费了屏幕上宝贵的空间并给用户错误的选择。
    【解决方案2】:

    如果有不同的虚拟键盘变体(swype 和其他),可能没有可能的单词列表。所以,我想没有不显示此列表的通用解决方案。

    有一个参数http://developer.android.com/reference/android/widget/TextView.html#attr_android:editorExtraseditorExtras 定义了传递给输入法实现的参数,但我不确定你会如何在PhoneGap 应用程序中使用它

    编辑:

    我想您可以扩展默认输入法并使其不显示建议 输入法参考http://developer.android.com/reference/android/inputmethodservice/InputMethodService.html

    提供自定义软件键盘

    如果您有兴趣开发自己的软件键盘,我们强烈推荐以下参考资料:

    IME 是作为 Android 服务实现的。首先查看名为 android.inputmethodservice 和 android.view.inputmethod 的 Android 包,它们可用于实现自定义输入法。 Android SDK 中的 SoftKeyboard 示例应用程序提供了软件键盘的实现。 Android 开发者关于屏幕输入法和创建输入法的技术文章。

    在这里找到它http://e-university.wisdomjobs.com/android/chapter-946-288/handling-advanced-user-input.html

    【讨论】:

    • 我不认为 webview 中的 HTML 输入字段可以使用 Android TextView 小部件的方法进行配置。第二:我不知道,可能安装了默认键盘以外的其他键盘。不过只配置默认软键盘应该没问题。
    • 对不起,我忘了这是 HTML 页面中的文本字段。所以唯一的办法就是自己在JS中验证/修改输入的文本
    • 完成了一半。我已经在 J​​S 中实现了一个建议列表(HTML5 数据列表不适用于 - 仅适用于 android? - webview)。但是如何禁用默认键盘提供的建议列表呢?
    • 实现一个新的输入服务对我的应用来说太多了。不仅我必须实现它,还必须安装和选择服务。此选择必须由用户在使用应用程序之前手动进行。据我了解,这不仅会影响我的应用,还会影响所有使用文本输入的应用。
    • 好吧,这就是我的意思,它的开销太大了,即使你不需要实现服务,而只是改变现有的行为。如果我是对的,这只会影响您的应用
    猜你喜欢
    • 1970-01-01
    • 2019-05-02
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多