2011-01-09 4 views
10

Ich habe dies auf keinem anderen Gerät getestet, aber auf einem 2.1-Gerät, in einem WebView mit eingeschalteten Zoomsteuerelementen, erscheint manchmal eine Toast-Meldung, die etwas wie "Tipp: Doppeltippen zum Vergrößern und Verkleinern" sagt. Ich weiß nicht, woher es kommt, da nichts in meinem Code danach gefragt hat. Gibt es eine Möglichkeit, dies zu deaktivieren?Wie deaktiviere ich die Tipp-Toast-Nachricht, die manchmal mit den Zoom-Steuerelementen in einem WebView angezeigt wird?

Ich weiß nicht, wie man es reproduziert, aber es scheint häufiger zu passieren, wenn die App neu installiert ist.

Antwort

9

Wie in wajiw Antwort angegeben, wird der Toast in WebSettings auf der Doppel-Tippen Toast Zahl basiert. Es gibt eine Problemumgehung basierend darauf, dass dieser Wert vorweggenommen wird. WebSettings erhält seinen Wert für Double-Toast-Toast-Anzahl aus SharedPreferences. Durch Überschreiben des Voreinstellungswerts wird der Toast deaktiviert.

Die Einstellungen basieren auf privaten Werten in WebSettings und sind daher nicht ideal. Wenn sich die Implementierung ändert, könnte das sehr gut funktionieren. Also, verwenden Sie auf eigene Gefahr.

Hier sind die Werte, die WebSettings für SharedPreferences verwendet. Sie müssen sie in Ihrer Klasse duplizieren.

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

Dann werden Sie die Werte ändern müssen, bevor Sie die

WebView verwenden
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(); 
} 

Check out WebSettings source code für weitere Informationen.

+0

Danke, es funktionierte wie ein Charme. – uerceg

4

am WebView.java Quelle Vom Blick es aus der Funktion startdrag kommen:

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(); 
      } 
     } 
    } 

die Einstellungen sind über GetSettings(). Von dort würde ich versuchen, SetDoubleTapToastCount aufzurufen und etwas wie 0 oder -1 für den Wert verwenden. Wenn das nicht funktioniert, haben Sie vielleicht kein Glück.

Komplette Quelle WebView.java here

+2

Aufgrund der Sichtbarkeit von setDoubleTapToastCount und der Überprüfung der Quelle von WebSettings scheint es derzeit nicht möglich, diese Nachricht zu deaktivieren. –

+0

@nick, das ist, was ich gefunden habe, aber wenn jemand sicher herausfinden will, sollten sie eine Test-App erstellen und ausprobieren, was sie können. Ich habe das Gefühl, dass es nur zu einer Sackgasse führen wird, obwohl – wajiw

+0

Ich sah mich den Code an und ja, es sieht nicht möglich aus. Schade. Danke für den Fund. – cottonBallPaws