Как отключить сообщение тоста, которое иногда появляется с помощью элементов управления масштабированием в WebView?
Я не тестировал это на других устройствах, но на устройстве 2.1, в WebView с включенными кнопками масштабирования, иногда появляется сообщение тоста, которое говорит что-то вроде "Совет: дважды нажмите, чтобы увеличить или уменьшить масштаб", Я не знаю, откуда это происходит, поскольку в моем коде ничего не было, чтобы он появился. Есть ли способ отключить это?
Я не знаю, как его воспроизвести, но, похоже, это происходит чаще, когда приложение только что установлено.
Ответы
Ответ 1
Как указано в ответе wajiw, тост основан на подсчете тостов двойного крана в 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.
Ответ 2
От взгляда на источник 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 здесь