10 Stimmen

Android: WebView lädt Bild/Inhalt in der Mitte

Ich habe ein Bild geladen mit WebView aber wenn es maximal herausgezoomt ist, platziert sich das Bild in der linken oberen Ecke meines Geräts. Gibt es eine Möglichkeit, das Bild so zu laden, dass es in der Mitte angezeigt wird?

Zum Wohl!

0voto

ununiform Punkte 400

Ich hatte das gleiche Problem - die vertikale Zentrierung in der Webansicht. Diese Lösung funktioniert die meiste Zeit... vielleicht kann es Ihnen ein wenig helfen

                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");

                }

0voto

ara.hayrabedian Punkte 459

Ich weiß, dass diese Antwort ein wenig spät kommt, aber hier ist eine Option ohne Javascript:

können Sie WebView erweitern und die geschützten Methoden verwenden computeHorizontalScrollRange() y computeVerticalScrollRange() um eine Vorstellung von der maximalen Bildlaufreichweite zu erhalten und auf dieser Grundlage zu berechnen, wo Sie scrollTo mit computeHorizontalScrollRange()/2 - getWidth()/2 and Ähnliches gilt für die Vertikale: computeVerticalScrollRange()/2 - getHeight()/2

Mein einziger Ratschlag wäre, sicherzustellen, dass das Laden abgeschlossen ist, bevor Sie dies tun, ich habe nicht getestet, ob dies funktioniert, während die Dinge geladen werden, aber ich glaube nicht, dass es, wie die Webview noch nicht haben es ist Scroll-Bereich korrekt eingestellt (wie Inhalt noch geladen wird) würde

siehe: Android Webview : Scrollen erkennen woher ich viele meiner Informationen habe.

0voto

Gabriel Terry Punkte 55

Für mich ist das Arbeit:

String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "PICTURE FILE NAME";
File file = new File(path);
String html = "<style>img{height: 100%;max-width: 100%;}</style> <html><head></head><body><center><img src=\"" + imagePath + "\"></center></body></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", "");

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X