Android Webview – La página web debe caber en la pantalla del dispositivo

He intentado lo siguiente para adaptarme a la página web en función del tamaño de la pantalla del dispositivo.

mWebview.setInitialScale(30); 

y luego configure la ventana de metadatos

    

Pero nada funciona, la página web no está fijada al tamaño de la pantalla del dispositivo.

¿Alguien puede decirme cómo obtener esto?

Debe calcular la escala que necesita usar manualmente, en lugar de establecerla en 30.

 private int getScale(){ Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); int width = display.getWidth(); Double val = new Double(width)/new Double(PIC_WIDTH); val = val * 100d; return val.intValue(); } 

Entonces usa

 WebView web = new WebView(this); web.setPadding(0, 0, 0, 0); web.setInitialScale(getScale()); 

Puedes usar esto

  WebView browser = (WebView) findViewById(R.id.webview); browser.getSettings().setLoadWithOverviewMode(true); browser.getSettings().setUseWideViewPort(true); 

esto arregla el tamaño basado en el tamaño de la pantalla.

Amigos,

Encontré mucha importación y gran información de usted. Pero, la única forma que funciona para mí fue de esta manera:

 webView = (WebView) findViewById(R.id.noticiasWebView); webView.setInitialScale(1); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); webView.setScrollbarFadingEnabled(false); webView.loadUrl(https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"http://www.resource.com.br/https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"); 

Estoy trabajando en Android 2.1 debido al tipo de dispositivos de la compañía. Pero arreglé mi problema usando la parte de información de cada uno.

¡Gracias!

Pruebe con estos consejos HTML5

http://www.html5rocks.com/en/mobile/mobifying.html

Y con esto, si tu versión de Android es 2.1 o superior

  WebView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); 

Esta configuración funcionó para mí:

 wv.setInitialScale(1); wv.getSettings().setLoadWithOverviewMode(true); wv.getSettings().setUseWideViewPort(true); wv.getSettings().setJavaScriptEnabled(true); 

setInitialScale (1) faltaba en mis bashs.

Aunque la documentación dice que 0 se ampliará por completo si setUseWideViewPort se establece en verdadero, pero 0 no funcionó para mí y tuve que configurar 1 .

Estos funcionan para mí y ajustan el ancho de la pantalla WebView:

 // get from xml, with all size set https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"fill_parenthttps://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/" webView = (WebView) findViewById(R.id.webview_in_layout); // fit the width of screen webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); // remove a weird white line on the right size webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 

Gracias por encima de los avisos y la línea blanca en eclipse Vista web

Todo lo que necesitas hacer es simplemente

 webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); 

Tengo el mismo problema cuando uso este código

 webview.setWebViewClient(new WebViewClient() { } 

entonces puede ser que lo elimines en tu código
Y recuerda agregar 3 modos a continuación para tu vista web

  webview.getSettings().setJavaScriptEnabled(true); webview.getSettings().setLoadWithOverviewMode(true); webview.getSettings().setUseWideViewPort(true); 

esto arregla el tamaño basado en el tamaño de la pantalla

 WebView browser = (WebView) findViewById(R.id.webview); browser.getSettings().setLoadWithOverviewMode(true); browser.getSettings().setUseWideViewPort(true); browser.getSettings().setMinimumFontSize(40); 

Esto funciona muy bien para mí, ya que el tamaño del texto ha sido ajustado a realmente pequeño por .setLoadWithOverViewMode y .setUseWideViewPort.

Esto parece un problema XML. Abra el documento XML que contiene su vista web. Elimina el código de relleno en la parte superior.

Luego, en el diseño, agregue

 android:layout_width=https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"fill_parenthttps://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/" android:layout_height=https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"fill_parenthttps://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/" 

En la Vista web, agregue

 android:layout_width=https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"fill_parenthttps://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/" android:layout_height=https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"fill_parenthttps://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/" 

Esto hace que la Vista web se ajuste a la pantalla del dispositivo.

En este caso, debe usar HTML en su webView. Lo solucioné usando el siguiente código

 webView.loadDataWithBaseURL(null, https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"\https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"pageNo\https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/", https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"text/htmlhttps://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/", https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"UTF-8https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/", null); 

Hacer cambios en la respuesta por danh32 desde display.getWidth (); ahora está en desuso

 private int getScale(){ Point p = new Point(); Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); display.getSize(p); int width = px; Double val = new Double(width)/new Double(PIC_WIDTH); val = val * 100d; return val.intValue(); } 

Entonces usa

 WebView web = new WebView(this); web.setPadding(0, 0, 0, 0); web.setInitialScale(getScale()); 
 int PIC_WIDTH= webView.getRight()-webView.getLeft(); 

El método getWidth del objeto Display está en desuso. Anule onSizeChanged para obtener el tamaño de WebView cuando esté disponible.

 WebView webView = new WebView(context) { @Override protected void onSizeChanged(int w, int h, int ow, int oh) { // if width is zero, this method will be called again if (w != 0) { Double scale = Double.valueOf(w) / Double.valueOf(WEB_PAGE_WIDTH); scale *= 100d; setInitialScale(scale.intValue()); } super.onSizeChanged(w, h, ow, oh); } }; 
 webview.setInitialScale(1); webview.getSettings().setLoadWithOverviewMode(true); webview.getSettings().setUseWideViewPort(true); webview.getSettings().setJavaScriptEnabled(true); 

funcionará, pero recuerde eliminar algo como:

  

si existió en el archivo html o cambiar user-escalable = sí, de lo contrario no lo hará.

Tenía un video en html, y el ancho de la vista web era mayor que el ancho de la pantalla y esto me funciona.

Agregue estas líneas a la cadena HTML.

    

Resultado después de agregar el código anterior a la cadena HTML:

       

Esto ayudará a ajustar el emulador de acuerdo con la página web:

 WebView wb; //CALL THIS METHOD wb.setInitialScale(50); 

Puede establecer la escala inicial en porcentaje como se muestra arriba.

En teoría, la combinación de:

 settings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); 

con

 settings.setUseWideViewPort(false) 

arregla el problema, envuelve el contenido y se adapta a la pantalla. Pero NARROW_COLUMNS ha quedado obsoleto. Te aconsejo que leas a continuación este hilo que explora el problema en detalle: https://code.google.com/p/android/issues/detail?id=62378

 WebView webView = (WebView)findViewById(R.id.web_view); webView.setInitialScale((int) getResources().getDimension(R.dimen._50sdp)); // getActivity(). if you are at Fragment webView.getSettings().setLoadsImagesAutomatically(true); webView.getSettings().setJavaScriptEnabled(true); webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); webView.loadDataWithBaseURL(null,here comes html content,https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"text/htmlhttps://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/",https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"UTF-8https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/", null); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setSupportZoom(true); webView.getSettings().setDisplayZoomControls(true); webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);