remove password off new funciona disable desactivar chrome autocompletar android webview zoom

android - password - ¿Desactivar el zoom al hacer clic en los campos de formulario dentro de una vista web?



disable autocomplete input (8)

¿Intentaste deshabilitar el escalable por el usuario en la etiqueta de la ventana gráfica? No estoy seguro si eso funcionará para ti, pero funciona para mí. No necesitaba hacer nada en el lado de Java.

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

He revisado docenas de páginas si hay preguntas similares, ninguna de ellas tiene respuestas, así que espero que esta sea diferente.

Tengo una vista web y no quiero que el zoom de la vista cambie del nivel de zoom inicial al que la tengo configurada. Lo único que cambia el nivel de zoom actualmente es cuando un cuadro de texto está enfocado .

Necesito poder hacer esto a través del código Java, sin usar la etiqueta meta de la ventana gráfica.

Solo para que no tenga las respuestas comunes, tengo lo siguiente en mi código para deshabilitar el zoom y los controles de zoom:

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

Estoy pensando que una posible solución es verificar cuándo ocurre un evento onFocus o incluso un evento onClick dentro de la vista web y luego alejarse, pero ¿ni siquiera estoy seguro de si eso es posible?

Cualquier sugerencia sera apreciada.


Creo que puedes establecer el nivel de zoom con el método WebView.setInitialScale . Toma un int como escala, así que supongo que querrías hacer algo como myWebView.setInitialScale(100) .


El WebView tiene una "cosa" especial, que creo que provocará muchas preguntas y respuestas aquí. Lo que sucede es que cuando se carga una URL, el Navegador de Android predeterminado se activa a través de un Intento para manejar esto. El zoom participa en este navegador , no en su vista web.

Solución: debe agregar un WebviewClient para decirle a Android que usted mismo maneja la navegación. Un ejemplo:

// 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"); } }

Mi main.xml se ve así

<?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" />

Este código deshabilitó el zoom en mi HTC Desire con Android 2.2. Tocar en los campos de entrada HTML no hace ninguna diferencia.

El tema completo de WebView / HelloWebViewClient , así como una pista importante para manejar el botón "Atrás" correctamente, se documenta en Hello Views, Web View . Debería ser necesaria la lectura para cualquiera que use WebView.


Este problema se solucionó mediante una actualización de firmware en los dispositivos HTC, que fue (aparentemente) se debió a que la interfaz de usuario de Sense anulaba incorrectamente la funcionalidad de Android predeterminada.

Es muy difícil proporcionar información sobre cuándo se corrigió exactamente, sin embargo, mi aplicación web ya no hace zoom cuando se hace clic en un cuadro de texto en cualquier dispositivo HTC con el último firmware.

Las siguientes dos líneas de código deshabilitarán los aspectos de "zoom" de una vista web de Android:

// disables the actual onscreen controls from showing up mWebView.getSettings().setBuiltInZoomControls(false); // disables the ability to zoom mWebView.getSettings().setSupportZoom(false);


Resolví esto en los teléfonos HTC agregando un WebViewClient con un oyente vacío para onScaleChanged. Mi aplicación es PhoneGap, así que esto es lo que parece, pero agregar al oyente debería verse igual en una aplicación que no sea PhoneGap:

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

}

Extrañamente, el oyente de onScaleChange nunca recibe una llamada: al escuchar el zoom, bloquea el movimiento. Descubrí que necesito todas las demás llamadas (setSupportZoom, setDefaultZoom, setInitialScale) para que esto funcione, y eliminar cualquiera de ellas vuelve al comportamiento antiguo y defectuoso.


También he encontrado este problema, y ​​lo resolví así:

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

Se está ejecutando normalmente en Sumsung Galaxy Tab. Espero que esto ayude.


Tuve el mismo problema. Necesitaba encontrar una manera de escalar el contenido de webview al valor exacto, todo funcionó bien hasta que el usuario comienza a ingresar texto. Hay métodos que funcionan en dispositivos relativamente nuevos con Android 4.0+ pero fallan en los antiguos. La única forma en que funciona en todas partes es configurar el valor del zoom no en Java sino en una ventana gráfica como esta

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

Funciona en todos los dispositivos que he probado.


ACTUALIZACIÓN Esta respuesta fue escrita hace casi 6 años, con todas las nuevas versiones de Android que llegaron desde entonces, lo más probable es que esté desactualizado.

Esto causó un gran dolor de cabeza, pero finalmente se resolvió gracias a setDefaultZoom(ZoomDensity.FAR);

Una cosa que es importante es que onCreate y loadUrl se loadUrl antes de los WebSettings, de lo contrario causó una situación de cierre forzado. Aquí el código ENTERO incluye las importaciones (para los usuarios novatos de 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); } }