Android: запрос фокуса на представление (WebView) добавлено через WindowManager - PullRequest
0 голосов
/ 19 октября 2018

Я показываю webView как alertDialog из службы, когда мое приложение не работает на переднем плане, поэтому My webView прикрепляется к экрану методом WindowManager.addView().

В webView есть поле input, которое я хочу сделать доступным для пользователя.К сожалению, когда пользователь нажимает на поле input, , на нем не отображается клавиатура, позволяющая пользователям вводить .

Мой webView находится внутри cardView, параметры которого следующие:

public WindowManager.LayoutParams getParamsForOpenWebView() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.TYPE_PHONE,
                 WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
                        | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                        | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
                        | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                PixelFormat.TRANSLUCENT);

        params.gravity = Gravity.START | Gravity.TOP;
        params.x = left;
        params.y = top;

        return params;
    } else {
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                 WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
                        | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                        | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
                        | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                PixelFormat.TRANSLUCENT);


        params.gravity = Gravity.START | Gravity.TOP;
        params.x = left;
        params.y = 200;

        return params;
    }
}

Если я подключу телефон к ноутбуку и использую клавиатуру ноутбука, чтобы добавить входы к входуполе, работает нормально но просто клавиатура на телефоне не всплывает.

Кроме того, вход находится внутри webView, поэтому я не могу использовать View.requestFocus(), чтобы получить фокус, в отличие от EditText.

. Я был бы очень признателен за любую помощь относительно того, какзапросите фокус на webView, чтобы разрешить ввод.

1 Ответ

0 голосов
/ 19 октября 2018

Через некоторое время сам нашел ответ на вопрос.

Я перепробовал множество комбинаций различных флагов, но ни один из них не работал, если только я не попытался

WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                    | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
                    | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS

Эти флаги дали результатыЯ хотел и надеюсь, что это поможет тому, кто проходит через то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...