Как отключить всплывающее сообщение, которое иногда появляется с элементами управления масштабированием в WebView? - PullRequest
10 голосов
/ 09 января 2011

Я не проверял это ни на каких других устройствах, кроме как на устройстве 2.1, в WebView с включенными элементами управления масштабированием иногда появляется всплывающее сообщение, которое говорит что-то вроде «Совет: двойное касание для увеличения и уменьшения»,Я не знаю, откуда это исходит, потому что в моем коде ничего не просили, чтобы это появилось.Есть ли способ отключить это?

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

Ответы [ 2 ]

9 голосов
/ 22 июля 2011

Как указано в ответе Ваджиу, тост основан на количестве тостов двойного касания в WebSettings. Существует обходной путь, основанный на вытеснении этого значения. WebSettings получает значение для подсчета тостов двойным касанием из SharedPreferences. Переопределение значения настроек отключит тост.

Предпочтения основаны на личных значениях в WebSettings, поэтому они не идеальны. Если реализация изменится, это вполне может перестать работать. Так что используйте на свой страх и риск.

Вот значения, которые WebSettings использует для SharedPreferences. Вам нужно будет продублировать их в вашем классе.

private static final String PREF_FILE = "WebViewSettings";
private static final String DOUBLE_TAP_TOAST_COUNT = "double_tap_toast_count";

Затем вам нужно изменить значения, прежде чем использовать WebView

SharedPreferences prefs = context.getSharedPreferences(PREF_FILE, Context.MODE_PRIVATE);
if (prefs.getInt(DOUBLE_TAP_TOAST_COUNT, 1) > 0) {
    prefs.edit().putInt(DOUBLE_TAP_TOAST_COUNT, 0).commit();
}

Проверьте Исходный код WebSettings для получения дополнительной информации.

4 голосов
/ 20 января 2011

Из исходного кода WebView.java видно, что он исходит из функции startDrag:

private void startDrag() {
        WebViewCore.reducePriority();
        // to get better performance, pause updating the picture
        WebViewCore.pauseUpdatePicture(mWebViewCore);
        if (!mDragFromTextInput) {
            nativeHideCursor();
        }
        WebSettings settings = getSettings();
        if (settings.supportZoom()
                && settings.getBuiltInZoomControls()
                && !getZoomButtonsController().isVisible()
                && mMinZoomScale < mMaxZoomScale
                && (mHorizontalScrollBarMode != SCROLLBAR_ALWAYSOFF
                        || mVerticalScrollBarMode != SCROLLBAR_ALWAYSOFF)) {
            mZoomButtonsController.setVisible(true);
            int count = settings.getDoubleTapToastCount();
            if (mInZoomOverview && count > 0) {
                settings.setDoubleTapToastCount(--count);
                Toast.makeText(mContext,
                        com.android.internal.R.string.double_tap_toast,
                        Toast.LENGTH_LONG).show();
            }
        }
    }

настройки доступны через getSettings ().Оттуда я попытался бы вызвать setDoubleTapToastCount и использовать что-то вроде 0 или -1 для значения.Если это не сработает, возможно, вам не повезло.

См. Полный источник WebView.java здесь

...