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?

  • Vérifiez si Android WebView consomme des événements tactiles
  • Comment désactiver l'effet cercle orange en cliquant sur un lien, dans un WebView
  • Est-il possible de changer le contexte d'un WebView après sa mise en place?
  • Empêchez les données de mise en cache de WebView d'Android
  • Android webview "Uncaught SyntaxError: Inattendu token ILLEGAL"
  • WebView et localhost
  • Comment modifier le contenu avant de le rendre dans Android WebView?
  • Android WebView addJavascriptInterface ne fonctionne pas si la vision du Web est créée dans le rappel de WebChromeClient # onCreateWindow
  • 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.