Android: WebView charge l’image / le contenu au centre

J’ai chargé une image avec WebView mais lorsqu’elle est agrandie, l’image se place dans le coin supérieur gauche de mon appareil. Est-il possible de charger l’image pour qu’elle soit affichée au centre?

À votre santé!

Vous pouvez utiliser ce code pour centrer l’image au centre de l’écran dans une vue Web:

  //first you will need to find the dimensions of the screen float width; float height; float currentHeight; WebView mWebView; //this function will set the current height according to screen orientation @Override public void onConfigurationChanged(Configuration newConfig){ if(newConfig.equals(Configuration.ORIENTATION_LANDSCAPE)){ currentHeight=width; loadImage(); }if(newConfig.equals(Configuration.ORIENTATION_PORTRAIT)){ currentHeight=height; loadImage(); } } //call this function and it will place the image at the center public void load and center the image on screen(){ mWebView=(WebView)findViewById(R.id.webview); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setBuiltInZoomControls(true); mWebView.setBackgroundColor(0); DisplayMesortingcs displaymesortingcs = new DisplayMesortingcs(); getWindowManager().getDefaultDisplay().getMesortingcs(displaymesortingcs); height = displaymesortingcs.heightPixels; width = displaymesortingcs.widthPixels; currentHeight=height //assuming that the phone //is held in portrait mode initially loadImage(); } public void loadImage(){ Bitmap BitmapOfMyImage=BitmapFactory.decodeResource(Environment.getExternalStorgeDirectory().getAbsolutePath()+"yourFolder/myImageName.jpg"); mWebView.loadDataWithBaseURL("file:///"+Environment.getExternalStorgeDirectory().getAbsolutePath() +"yourFolder/","
","text/html","utf-8",""); //This loads the image at the center of thee screen }

J’ai utilisé la balise center pour centrer l’image verticalement, puis la balise vspace pour donner une marge supérieure à l’image. Maintenant, la marge est calculée par: screenVierticalHeight / 2-ImageVerticalHeight / 2

J’espère que cela t’aides

Je l’ai fait avec une combinaison de XML et de code. J’ai mon fichier gif stocké dans le dossier assets.

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_webview); WebView webView = (WebView) findViewById(R.id.webView); webView.setWebViewClient(new WebViewController()); webView.loadDataWithBaseURL("file:///android_asset/","
","text/html","utf-8",""); } private class WebViewController extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, Ssortingng url) { view.loadUrl(url); return true; } }
  mWebView.loadDataWithBaseURL("file:///"+Environment.getExternalStorgeDirectory().getAbsolutePath()+"yourFolder/","
","text/html","utf-8","");

Cela place l’image de la carte SD au centre de la WebView. J’espère que ça aide

Essayez de charger un fichier HTML qui intègre l’image à la place. Toute la mise en page peut alors être faite avec des styles CSS standard.

J’ai eu le même problème – centrer verticalement dans WebView. Cette solution fonctionne la plupart du temps … peut-être qu’elle peut vous aider un peu

  int pheight = picture.getHeight(); int vheight = view.getHeight(); float ratio = (float) vheight / (float) pheight; System.out.println("pheight: " + pheight + "px"); System.out.println("vheight: " + vheight + "px"); System.out.println("ratio: " + ratio + "px"); if (ratio > 0.5) { return; } int diff = pheight - vheight; int diff2 = (int) ((diff * ratio) / 4); if (pheight > vheight) { // scroll to middle of webview currentPhotoWebview.scrollTo(0, diff2); System.out.println("scrolling webview by " + diff2 + "px"); } 

Je sais que cette réponse est un peu tardive, mais voici une option sans javascript:

vous pouvez étendre WebView et utiliser les méthodes protégées computeHorizontalScrollRange() et computeVerticalScrollRange() pour avoir une idée de la plage de défilement maximale et en fonction de celle-ci calculer où vous voulez faire computeHorizontalScrollRange()/2 - getWidth()/2 and avec computeHorizontalScrollRange()/2 - getWidth()/2 and similaire vertical: computeVerticalScrollRange()/2 - getHeight()/2

mon seul conseil serait de m’assurer que le chargement est terminé avant de le faire, je n’ai pas vérifié si cela fonctionnait pendant le chargement, mais je ne pense pas que ce serait le cas, car la vue Web ne dispose pas encore d’une plage de défilement correctement définie ( le contenu est toujours en cours de chargement)

voir: Webview Android: détecter le défilement d’ où j’ai tiré beaucoup de mes informations.

Pour moi c’est du travail:

 Ssortingng path = Environment.getExternalStorageDirectory().getAbsolutePath() + "PICTURE FILE NAME"; File file = new File(path); Ssortingng html = " 
"; webView.getSettings().setDefaultZoom(ZoomDensity.FAR); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setUseWideViewPort(true); webView.getSettings().setLoadWithOverviewMode(true); webView.loadDataWithBaseURL( "" , html, "text/html", "UTF-8", "");
 Ssortingng html = "

+"you message"+

";

webView.loadData (html, “text / html; charset = UTF-8”, null);

Donc, cela va charger votre webview avec le texte au centre