【问题标题】:How to hide keyboard when user clicks on textbox in webview android当用户点击webview android中的文本框时如何隐藏键盘
【发布时间】:2015-12-31 15:10:44
【问题描述】:

当用户聚焦或点击 webview 中的 html 输入元素时,我们可以隐藏 android 系统键盘吗?

我尝试在用户触摸 webview 时隐藏键盘:

webView.setOnTouchListener(new View.OnTouchListener()
{
    @Override
    public boolean onTouch (View v, MotionEvent event){
        Toast.makeText(cx,"Web View Touch",Toast.LENGTH_LONG).show();
        v.onTouchEvent(event);
        InputMethodManager imm = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm != null) {
            imm.hideSoftInputFromWindow(v.getWindowToken(), 0);

        }
            return true;
    }
})

但这不起作用。

是否可以选择完全隐藏应用程序的键盘?

【问题讨论】:

  • 谢谢@riazhasan 我刚刚尝试过。当我在 webview 中单击 textarea 时,它不起作用。
  • 嘿抱歉它在模拟器 Nexus4 API 19 中工作。但是当我通过 USB 检查 Moto G 时它不起作用。

标签: android android-webview android-softkeyboard


【解决方案1】:

您可以使用清单控制每个活动的softkeyboard - Handling Input Method Visibility,如下所示:

<activity
    android:name=".Main"
    android:windowSoftInputMode="stateAlwaysHidden" >

<activity
    android:name=".Main"
    android:windowSoftInputMode="stateHidden" >

您还可以控制它,使其使用“下一个”从一个编辑文本流到下一个编辑文本,然后使用 IME options 使用“完成”再次隐藏。

android:imeOptions="actionNext"
android:imeOptions="actionDone"

我也意识到问题在于使用 webview 并且还需要禁用父布局中的任何键盘,因为 webview 与清单中的活动是分开的,因此将其添加到任何父布局中:

android:descendantFocusability="blocksDescendants"

在网络视图中:

android:focusable="false" 
android:focusableInTouchMode="false"

【讨论】:

  • 嘿,它在模拟器 Nexus4 API 19 中工作。但是当我通过 USB 检查 Moto G 时,它不起作用。关于这个问题的任何想法。
【解决方案2】:

在 manifest.xml 中的 Activity 中试试这个。

android:windowSoftInputMode="stateHidden"

它可能会有所帮助。

【讨论】:

    猜你喜欢
    • 2012-03-26
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    相关资源
    最近更新 更多