Android WebView: muestra sólo una parte del sitio web

Quería saber si era posible mostrar sólo ciertas partes de un sitio web en un WebView. Por ejemplo, tengo este sitio web con el siguiente html:

<html> <body> <div id="1">ID 1</id> <div id="2">ID 2</id> <div id="3">ID 3</id> </body> </html> 

Es posible mostrar sólo en WebView, por ejemplo, el contenido de la div con id = "3"? Mi código es WebWiew:

 WebViewClient WebClient = new WebViewClient(){ public boolean shouldOverrideUrlLoading(WebView view, String url){ view.loadUrl(url); return true; } }; WebView myWebView = (WebView) findViewById(R.id.webView1); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.getSettings().setBuiltInZoomControls(true); myWebView.getSettings().setBuiltInZoomControls(true); myWebView.setWebViewClient(WebClient); myWebView.loadUrl("https://www.example.com"); 

Usted puede hacer esto mediante la ampliación de WebViewClient y la inyección de algunos javascript que hará su página web

 public class MyWebClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { view.loadUrl("javascript:your javascript"); } } ......... final MyWebClient myWebViewClient = new MyWebClient(); mWebView.setWebViewClient(myWebViewClient); 

Para ocultar elementos use view.loadUrl("javascript:document.getElementById(id).style.display = 'none';)

Más información En la vista Web de Android, ¿puedo modificar el DOM de una página web?

La cosa más básica a entender aquí es si el elemento que nos estamos refiriendo dentro del archivo de html de la tela es una clase o un id . Si es un id entonces getElementById funciona perfectamente. Si es una clase entonces getElementsByClassName es necesario.

A continuación se muestra un ejemplo que estoy usando.

 myWebView.loadUrl ("javascript:(function() { " + "document.getElementsByClassName('header_wrapper')[0].style.display='none'; " + "document.getElementsByClassName('footer-contact')[0].style.display='none'; "+ "document.getElementsByClassName('navbar-header')[0].style.display='none'; "+ "document.getElementsByClassName('footer-social')[0].style.display='none'; "+ "document.getElementById('footer_bottom').style.display='none'; "+ "document.getElementById('footer_content').style.display='none'; "+ "document.getElementById('core_mobile_menu').style.display='none'; "+ "document.getElementById('catapult-cookie-bar').style.display='none'; "+ "} )()"); 
  • Mi listview no rellena el padre
  • ¿Es posible generar una clase interna de una clase para compilar con un procesador de anotación?
  • ¿Por qué a veces Bitmaps son los mismos objetos?
  • Android cómo cambiar el tamaño (escala) de un icono de vector xml mediante programación
  • Recursos crudos versus base de datos SQLite
  • Control deslizante de imagen y vídeo en Android
  • Variable no final dentro de una clase interna
  • Llamadas de bloqueo de Android Canvas IllegalArgumentException
  • Android incluye programación de diseño (es decir, sin XML)
  • OOD y pasando la actividad como un parámetro a los constructores de otras clases
  • Errores al grabar sonido en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.