2011-01-09 4 views
10

これは他のどのデバイスでもテストされていませんが、2.1のデバイスでは、ズームコントロールがオンになっているWebViewで、ヒントメッセージが表示されることがあります。私のコードの中に何も出てこないように、どこから来ているのか分かりません。これを無効にする方法はありますか?WebViewでズームコントロールで表示されるヒントのトーストメッセージを無効にするにはどうすればよいですか?

私はそれを再現する方法はわかりませんが、アプリが新しくインストールされたときに頻繁に発生するようです。それはstartDragを関数から来るWebView.javaのソースを見てから

答えて

9

を参照してください。その値をプリエンプトすることに基づく回避策があります。 WebSettingsはSharedPreferencesからダブルタップトーストカウントの値を取得します。設定値を無効にすると、トーストが無効になります。

設定はWebSettingsのプライベート値に基づいているため、理想的ではありません。実装が変更された場合、これは動作を停止する可能性があります。したがって、あなた自身の責任において使用してください。

WebSettingsがSharedPreferencesに使用する値は次のとおりです。あなたはクラスでそれらを複製する必要があります。あなたは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(); 
} 

を使用する前に

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

その後、あなたは値を変更する必要があります詳細はWebSettings source codeをチェックしてください。

+0

ありがとうございます、それは魅力的でした。 – uerceg

4

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のようなものを使用しようとします。それがうまくいかなければ、あなたは運がないかもしれません。

はwajiwの答えに示すように、トーストをWebSettingsでダブルタップトーストカウントに基づいているWebView.java hereの完全なソース

+2

setDoubleTapToastCountの可視性とWebSettingsのソースを確認することで、現在このメッセージを無効にすることはできないようです。 –

+0

@nickこれは私が思いついたものですが、誰かがテストアプリを作成してできることを試してみるべきかどうかを確かめたい場合は、私はそれが致命的な終わりにつながるつもりであるように感じる – wajiw

+0

私はコードで周りを見て、うん、それは可能に見えません。残念な。しかし、見つけてくれてありがとう。 – cottonBallPaws

関連する問題