Запретить клавиатуру в webView

Я хочу, чтобы это было невозможно для мягкой клавиатуры, чтобы выскочить из-за действия в моем webView. Это потому, что у меня есть пользовательская "клавиатура", состоящая из кнопок под webView. Однако я не хочу полностью отключать клавиатуру для своего приложения, так как я должен использовать ее в разных контекстах. Он просто не должен отображаться, когда пользователь нажимает на поле ввода внутри webView. Я также не хочу, чтобы клавиатура отображалась и мгновенно скрывалась снова.

I в настоящее время имейте это в моем 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 ответов


используйте это в своем 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" />

извините, я опоздал в этот раз.

но вот решение:

добавьте это в свой родительский макет:

android:descendantFocusability="blocksDescendants"

установите эти два свойства вашего WebView:

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

это работает для меня :)


вставьте это в свой onCreate метод после setContentView

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

клавиатура не будет отображаться при запуске этого действия.


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

назовите это перед всем