Android WebView ajoutant un espace vide étrange en bas

J'essaie d'ajouter plus d'espace vide à un WebView chargé en utilisant JavaScript .

Je charge des données en utilisant loadDataWithBaseUrl() partir d'une ressource String . Ensuite, après avoir mesuré un certain contenu, j'ai besoin de rendre WebView plus grand, disons pour 100 pixels. J'appelle donc la fonction javascript en utilisant loadDataWithBaseUrl() :

 mWebView.loadUrl("javascript:addHeight()"); 

Javascript fonction Javascript est définie dans le HTML original:

 function addHeight() { " + var elemDiv = document.createElement('div'); elemDiv.style.cssText = 'height:100px;'; document.body.appendChild(elemDiv); } 

Après cela, WebView redimensionne pour s'adapter au nouveau contenu. Cependant, la hauteur qui en résulte n'est pas originaleTaille + 100px, mais plus grande. Je ne sais pas où est le problème. Je ne peux pas déterminer la taille cible, car cela dépend de la taille de la division ajoutée et elle sera toujours différente.

Est-ce que quelqu'un a essayé cela? Connaissez-vous ce comportement?

  • Comment puis-je transmettre les valeurs de retour d'une fonction javascript à Android?
  • Android WebView lance "les demandes d'origine croisée ne sont prises en charge que pour l'exception http" en essayant de charger la ressource à partir du disque
  • Webview ne peut pas charger le fichier html de la carte sd
  • Comment Google peut-il détecter une demande à partir d'un WebView?
  • Est-il possible de changer le contexte d'un WebView après sa mise en place?
  • WebView ne parvient pas à se connecter lorsque l'application est lancée pour la première fois
  • Google n'autorise plus l'utilisation de WebView. Quelles sont les alternatives?
  • Quelle est la signification de PicturePileLayerContent (...): Attention: Peinture PicturePile sans contenu
  • One Solution collect form web for “Android WebView ajoutant un espace vide étrange en bas”

    J'ai trouvé la solution suivante . Il a utilisé le rappel de JS. J'espère que ceci vous aide. Cette modification de taille devrait fonctionner mieux que dynamique.

      private void setupWebView() { webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { webView.loadUrl("javascript:MyApp.resize(document.body.getBoundingClientRect().height)"); super.onPageFinished(view, url); } }); webView.addJavascriptInterface(this, "MyApp"); } @JavascriptInterface public void resize(final float height) { MyActivity.this.runOnUiThread(new Runnable() { @Override public void run() { webView.setLayoutParams(new LinearLayout.LayoutParams(getResources().getDisplayMetrics().widthPixels, (int) (height * getResources().getDisplayMetrics().density))); } }); } 

    Et de voir le paragraphe 4 de cette liste . Bonne chance!

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.