Disabilitare lo zoom quando si fa clic sui campi module all'interno di un WebView?

Ho guardato attraverso decine di pagine se domande simili, nessuna di loro ha alcuna risposta, quindi speriamo che questo sarà diverso.

Ho una visualizzazione web e non voglio che lo zoom della vista cambia dal livello di zoom iniziale che lo metto. L'unica cosa che cambia il livello di zoom attualmente è quando si concentra una casella di text .

  • Come eseguire un'applicazione android quando il dispositivo viene avviato?
  • Eclipse Plugin Android - libncurses.so.5
  • Dagger 2 esempi
  • Come definire dimens.xml per each dimensione dello schermo in android?
  • Android: Attività di chiamata da frammento
  • Come select più immagini dalla galleria in android?
  • Devo essere in grado di farlo attraverso il codice Java, non utilizzando il meta tag di visualizzazione.

    Proprio così non ho le risposte comuni, ho il seguente nel mio codice per disabilitare lo zoom e i controlli dello zoom:

    mWebView.getSettings().setBuiltInZoomControls(false); mWebView.getSettings().setSupportZoom(false); 

    Sto pensando che una ansible soluzione consiste nel verificare quando un evento onFocus o anche un evento onClick si verifica all'interno di WebView e poi zoomOut, ma non sono neanche sicuro se è ansible?

    Tutti i suggerimenti sarebbero apprezzati.

  • ListView non mostra valori corretti dopo lo scorrimento
  • Come sostituire le risorse delle stringhe con Gradley di Android
  • android si connette a magento
  • È la mia "hal_process_report_ind: Bad item quality: 11" qualcosa da preoccuparsi?
  • Qual è il modo migliore per verificare se la vista è visibile sulla window?
  • Come posso interrompere un problema apparentemente hardware dipendente con la mia applicazione Android senza l'accesso all'hardware?
  • 8 Solutions collect form web for “Disabilitare lo zoom quando si fa clic sui campi module all'interno di un WebView?”

    AGGIORNAMENTO Questa risposta è stata scritta quasi 6 anni fa, con tutte le nuove versioni android che è venuto da allora, questo è probabilmente obsoleto.

    Questa causa ha causato una grave mal di testa, ma finalmente è stato risolto grazie a setDefaultZoom(ZoomDensity.FAR);

    Una cosa importnte è che onCreate e loadUrl chiamati prima dei WebSettings, altrimenti ha causato una situazione di forza stretto. Qui il codice ENTRA che include le importzioni (per gli utenti di novizio Java)

     package com.my.app; import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebSettings.ZoomDensity; import com.phonegap.*; public class MyDroidActivity extends DroidGap { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.loadUrl("file:///android_asset/www/index.html"); WebSettings settings = appView.getSettings(); settings.setBuiltInZoomControls(false); settings.setSupportZoom(false); settings.setDefaultZoom(ZoomDensity.FAR); } } 

    Ho risolto questo problema sui telefoni HTC aggiungendo un WebViewClient con un listener vuoto per onScaleChanged. La mia applicazione è PhoneGap, quindi questo è ciò che sembra, ma aggiungendo l'ascoltatore dovrebbe sembrare lo stesso in un'applicazione non telefonica:

     public class Main extends DroidGap { private class NoScaleWebViewClient extends GapViewClient { public NoScaleWebViewClient(DroidGap ctx) { super(ctx); } public void onScaleChanged(WebView view, float oldScale, float newScale) { Log.d("NoScaleWebViewClient", "Scale changed: " + String.valueOf(oldScale) + " => " + String.valueOf(newScale)); } } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); this.init(); setWebViewClient(appView, new NoScaleWebViewClient(this)); // disables the actual onscreen controls from showing up appView.getSettings().setBuiltInZoomControls(false); // disables the ability to zoom appView.getSettings().setSupportZoom(false); appView.getSettings().setDefaultZoom(ZoomDensity.FAR); appView.setInitialScale(100); } 

    }

    Stranamente, l'ascoltatore onScaleChange non viene mai chiamato – ascoltando lo zoom, blocca lo zoom. Ho scoperto che ho bisogno di tutte le altre chiamate (setSupportZoom, setDefaultZoom, setInitialScale) affinché questo funzioni e la rimozione di uno di essi ritorna al vecchio comportmento buggy.

    Ho avuto lo stesso problema. Ho dovuto trovare un modo per ridimensionare il contenuto di webview al valore esatto, tutto funzionò finché l'utente non inizia a immettere text. Ci sono methods che lavorano su dispositivi relativamente nuovi Android 4.0+ ma non riescono a quelli vecchi. L'unico modo che funziona ovunque è impostare il valore dello zoom non in Java, ma in visualizzazione come questo

     <meta name="viewport" content="initial-scale=.80; maximum-scale=.80; minimum-scale=.80;" /> 

    Funziona su each dispositivo che ho testato.

    Hai provato a distriggersre l'utente scalabile nel tag di visualizzazione? Non so se questo funziona per te, ma funziona per me. Non avevo bisogno di fare niente sul lato java.

     <meta name="viewport" content="user-scalable=no, width=device-width" /> 

    Ho incontrato anche questo problema, e ho risolto così:

     myWebview.getSettings().setDefaultZoom(ZoomDensity.FAR); 

    Funziona normalmente su Sumsung Galaxy Tab. Spero che questo ti aiuterà.

    Il WebView ha una "cosa" speciale, che credo possa far scattare molte domande e risposte. Quello che accade è che quando viene caricato un URL, il Browser Android predefinito entra in gioco attraverso un Intento per gestirlo. Lo zoom compaiono in questo browser , non nella tua videata.

    Soluzione: È necessario aggiungere un WebviewClient per indicare a Android che gestisci l'esplorazione. Un esempio:

     // Use WebView and disable zooming public class MyWebView extends Activity { // nested class private class HelloWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true } } private WebView mWebView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mWebView = (WebView) findViewById(R.id.webview); mWebView.setWebViewClient(new HelloWebViewClient()); mWebView.setInitialScale(500); // added after user comment mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setBuiltInZoomControls(false); mWebView.getSettings().setSupportZoom(false); mWebView.loadUrl("http://www.google.com"); } } 

    Il mio main.xml sembra questo

     <?xml version="1.0" encoding="utf-8"?> <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> 

    Questo codice ha distriggersto la zoom sul mio HTC Desire che esegue Android 2.2. L'inserimento nei campi di input HTML non ha alcuna differenza.

    L'integer argomento di WebView / HelloWebViewClient e un importnte suggerimento per gestire correttamente il button "Back" sono documentati in Ciao Viste, Web View . Deve essere richiesta la lettura per chiunque utilizzi WebView.

    Credo che puoi impostare il livello dello zoom con il metodo WebView.setInitialScale . Ci vuole un int come scala, quindi indovino che tu voglia fare qualcosa come myWebView.setInitialScale(100) .

    Questo problema è stato risolto da un aggiornamento del firmware sui dispositivi HTC, è stato (apparentemente) causato dall'interface utente Sense che ha superato in modo errato le funzionalità di default di Android.

    E 'molto difficile fornire informazioni esattamente quando questo è stato corretto, tuttavia la mia applicazione web non ingrandisce più quando una casella di text viene cliccato su qualsiasi dispositivo HTC con il firmware più recente.

    Le seguenti due righe di codice distriggersno gli aspetti "zoom" di una pagina web di android:

     // disables the actual onscreen controls from showing up mWebView.getSettings().setBuiltInZoomControls(false); // disables the ability to zoom mWebView.getSettings().setSupportZoom(false); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.