在webView中阻止键盘

时间:2018-05-01 11:43:33

标签: java android webview keyboard android-softkeyboard

我希望由于我的webView中的操作而无法弹出软键盘。那是因为我有一个自定义的“键盘”,由webView下面的按钮组成。但是,我不想为我的应用程序完全禁用键盘,因为我必须在不同的上下文中使用它。当用户单击webView中的输入字段时,它不应该显示。我也不希望键盘显示并立即再次隐藏。

我目前在我的AndroidManifest.xml

中有这个
android:windowSoftInputMode="stateAlwaysHidden"

我已经尝试禁用webView的焦点,但是我无法使用自定义“键盘”输入文本,因为webView的输入字段没有聚焦。

我也在onCreate尝试了这个,但它没有用(键盘仍然显示):

View focusedView = this.getCurrentFocus();
if (focusedView == null)
    return;
InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (manager == null)
    return;
manager.hideSoftInputFromWindow(focusedView.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);

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

4 个答案:

答案 0 :(得分:8)

抱歉,我迟到了。

但这是解决方案:

在父布局中添加:

android:descendantFocusability="blocksDescendants"

设置WebView的这两个属性:

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

这对我有用:)

答案 1 :(得分:3)

WebView

中使用此功能
 android:descendantFocusability="blocksDescendants"
 android:focusable="false"
 android:focusableInTouchMode="false"

试试这个

<WebView
    android:id="@+id/myWebView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:descendantFocusability="blocksDescendants"
    android:focusable="false"
    android:focusableInTouchMode="false" />

答案 2 :(得分:0)

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

在所有事情之前调用此

答案 3 :(得分:0)

onCreate

之后将其粘贴到setContentView方法中

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

运行此活动时键盘不会显示。