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!

6voto

user2765861 Punkte 163

Ich habe es mit einer Kombination aus Xml und Code gemacht. Ich habe meine gif-Datei im Ordner assets gespeichert.

Nachfolgend finden Sie den Xml-Layout-Code:

<RelativeLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

<WebView
    android:id="@+id/webView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true" />

</RelativeLayout>

Nachfolgend finden Sie den Java-Code:

@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/","<html><center><img src=\"animation.gif\"></html>","text/html","utf-8","");
}

private class WebViewController extends WebViewClient {
     @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
}

4voto

Rahul Verma Punkte 2120

Sie können diesen Code verwenden, um das Bild in der Mitte des Bildschirms in einer WebView zu zentrieren:

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

    DisplayMetrics displaymetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    height = displaymetrics.heightPixels;
    width = displaymetrics.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/","<html><center>
                                    <img src=\"myImageName.jpg\" vspace="
                                    +(currentHeight/2-(BitmapOfMyImage.getHeight()/2))+">
                                     </html>","text/html","utf-8","");
     //This loads the image at the center of thee screen                    

   }

Ich habe den center-Tag verwendet, um das Bild vertikal zu zentrieren und dann den vspace-Tag verwendet, um dem Bild einen oberen Rand zu geben. Jetzt wird der Rand wie folgt berechnet: screenVerticalHeight/2-ImageVerticalHeight/2

Ich hoffe, das hilft

1voto

Rahul Verma Punkte 2120
    mWebView.loadDataWithBaseURL("file:///"+Environment.getExternalStorgeDirectory().getAbsolutePath()+"yourFolder/","<html><center><img src=\"myImage.jpg\"></html>","text/html","utf-8","");

Dies platziert das Bild von der SDCard in der Mitte des WebViews. Ich hoffe, das hilft

1voto

sonal balekai Punkte 395
String html = "<html><head><style type='text/css'>html,body {margin: 0;padding: 0;width: 100%;height: 100%;}html {display: table;}body {display: table-cell;vertical-align: middle;text-align: center;}</style></head><body><p style=\"color:white\">+"you message"+</p></body></html>";

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

So wird Ihr Webview mit dem Text in der Mitte geladen

0voto

alex Punkte 2444

Versuchen Sie stattdessen, eine HTML-Datei zu laden, die das Bild einbettet. Das gesamte Layout kann dann mit Standard-CSS-Styles erfolgen.

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