Android 禁用WebView中的软键盘

Android 禁用WebView中的软键盘,android,webview,Android,Webview,我知道这是一个常见的问题,但我在这里和谷歌上都找不到一个有效的解决方案 我的android应用程序中有一个WebView,里面有一个JSF页面,带有一个简单的日期选择器组件: <p:calendar value="#{patientHealthDataView.dateFrom}" id="popupButtonDateFrom" showOn="button" class="tableCalendarText"/> 不幸的是,当我点击输入文本或按钮显示日历的弹出窗口时,焦点转到输

我知道这是一个常见的问题,但我在这里和谷歌上都找不到一个有效的解决方案

我的android应用程序中有一个WebView,里面有一个JSF页面,带有一个简单的日期选择器组件:

<p:calendar value="#{patientHealthDataView.dateFrom}" id="popupButtonDateFrom" showOn="button" class="tableCalendarText"/>
不幸的是,当我点击输入文本或按钮显示日历的弹出窗口时,焦点转到输入文本,Android显示隐藏日历的键盘

我试过几种解决办法。最后一个是:

 view.setOnTouchListener(new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            hideSoftKeyboard(v);
            return false;
        }
    });

public void hideSoftKeyboard(View v) {
        Activity activity = (Activity) v.getContext();
        InputMethodManager inputMethodManager = (InputMethodManager)  activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
    }
根据Android Studio的建议,此代码在以下情况下引发空指针异常:

activity.getCurrentFocus().getWindowToken()
其他解决方案表示在清单中插入一个特殊命令,但我只想在WebView中阻止键盘


有什么建议吗?

在layour layout.xml的mainparent布局中添加以下代码

android:descendantFocusability="blocksDescendants"
希望它能起作用

并在webview中设置以下属性

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

我也有类似的问题。我使用了带有日期时间选择器的文本输入:

HTML:输入类型=文本占位符=出生日期id=某些id名称=某些id值=必需

JQuery: $'some\u id'.datetimepicker{格式:\'YYYY-MM-DD\'

但是,这会导致问题,因为当您尝试选择日期时,软键盘会弹出。然后我尝试用以下方法修复它:

HTML:输入类型=文本占位符=出生日期id=某些id名称=某些id值=聚焦=模糊;必需的

这是可行的,但实际打开日历的时间太长了,但至少软键盘没有弹出。这只是想让你看看我一开始试过什么

我的解决方案: 输入类型=日期占位符=出生日期id=某些id名称=某些id值=必需

我所要做的就是将输入类型从text改为date,并删除jquery行


希望这对某人有帮助

您是否尝试过inputMethodManager.hideSoftInputFromWindowwebView.getWindowToken,0;其中webView是您的webView视图=WebViewfindViewByIdR.id.statistics?谢谢你的回答。我刚试过。不幸的是,这个解决方案不起作用。看起来最好的破解方法是知道键盘何时被部署,并隐藏起来。在这个问题上可以找到解决方案:可能重复尝试这些黑客我的WebView partent标签是一个线性布局。我尝试过如下使用您的代码:android:genderantfocusability=before后代android:focusableInTouchMode=true,但它不起作用。我也尝试过在focusableInTouchMode中使用false,但都是一样的。键盘仍然显示。
android:focusable="false" 
android:focusableInTouchMode="true"