2012-01-26 8 views
10

Na Androidzie używam widoku internetowego do wyświetlania wykresu zaprojektowanego przez flotę interfejsu API.Wyłączanie podwójnego kliknięcia Zoom/Unzoom na widoku internetowym

Używam tego kodu:

super.onCreate(savedInstanceState); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.graphique); 

    // Get a reference to the declared WebView holder 
    WebView webview = (WebView) this.findViewById(R.id.webView1); 

    // Get the settings 
    WebSettings webSettings = webview.getSettings(); 

    // Enable Javascript for interaction 
    webSettings.setJavaScriptEnabled(true); 

    // Make the zoom controls visible 
    //webSettings.setBuiltInZoomControls(true); 

    // Allow for touching selecting/deselecting data series 
    webview.requestFocusFromTouch(); 

    // Set the client 
    webview.setWebViewClient(new WebViewClient()); 
    webview.setWebChromeClient(new WebChromeClient()); 
    webview.setBackgroundColor(0); 

    webview.getSettings().setLoadWithOverviewMode(true); 
    webview.getSettings().setUseWideViewPort(true); 
    // Load the URL 
    webview.loadUrl("file:///android_asset/graph.html"); 

Na wykresie wyświetlany jest poprawnie i wypełnia całą webview nawet jeśli szerokość i wysokość nie są takie same na początku (dzięki setLoadWithOverviewMode (prawda) i (setUseWideViewPort prawdziwe)).

Użytkownik może jednak nadal powiększać i pomniejszać wykres, dwukrotnie dotykając go.

Chcę, aby zapobiec tej akcji, starałem się umieścić mój webview na clickable = false, focusable = false i focusableintouchmode = false, ale to nie działa.

Próbowałem to również:

webview.getSettings().setBuiltInZoomControls(false); 

Ale to nie działa. Czy masz jakąś wskazówkę?

+0

http://stackoverflow.com/questions/5125851/enable-disable-zoom-in-android- webview –

+0

Proszę spróbować na moją odpowiedź z podobnego pytania: http://stackoverflow.com/a/21472048/510577 –

Odpowiedz

24

spróbuj ustawić

webView.getSettings().setUseWideViewPort(false); 

i radzić sobie ze skalą ręcznie dopasować szerokość ..

+0

Myślę, że to działa, ale jak skalować ręcznie szerokość? Nie można zdefiniować mojej szerokości i wysokości wykresu, czy mogę skalować ją bezpośrednio z mojego kodu? – Thordax

+1

spróbuj tego: http://stackoverflow.com/a/3916700/519955 –

+0

Wielkie dzięki! Dokładnie to, czego potrzebowałem. – Thordax