11 Stimmen

Wie man Breite und Höhe eines Webviews in Android erhält

Ich möchte die Breite und die Höhe des WebView . Ich habe bereits versucht, es mit:

webView.getWidth();
webView.getHeight();

aber das Ergebnisprotokoll zeigt sie immer als 0 an.

1voto

Sie prüfen die Größe der Webansicht zu früh. Sie können dies mit der folgenden Methode versuchen

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    // TODO Auto-generated method stub
    super.onWindowFocusChanged(hasFocus);
            webView.getWidth();
            webView.getHeight();
}

1voto

Jon Goodwin Punkte 8794

Sie benötigen die Breite und Höhe des WebView CONTENTS, nachdem Sie Ihr HTML geladen haben. JA, aber es gibt keine getContentWidth-Methode (nur einen View-Port-Wert), UND die Methode getContentHeight() ist ungenau!

Antwort: Unterklasse WebView:

/*
  Jon Goodwin
*/
package com.example.html2pdf;//your package

import android.content.Context;
import android.util.AttributeSet;
import android.webkit.WebView;

class CustomWebView extends WebView
{
    public int rawContentWidth   = 0;                         //unneeded
    public int rawContentHeight  = 0;                         //unneeded
    Context    mContext          = null;                      //unneeded

    public CustomWebView(Context context)                     //unused constructor
    {
        super(context);
        mContext = this.getContext();
    }   

    public CustomWebView(Context context, AttributeSet attrs) //inflate constructor
    {
        super(context,attrs);
        mContext = context;
    }

    public int getContentWidth()
    {
        int ret = super.computeHorizontalScrollRange();//working after load of page
        rawContentWidth = ret;
        return ret;
    }

    public int getContentHeight()
    {
        int ret = super.computeVerticalScrollRange(); //working after load of page
        rawContentHeight = ret;
        return ret;
    }
//=========
}//class
//=========

1voto

Morse Punkte 6837

Ich habe einen Workaround verwendet, anstatt von unzuverlässigen Webview holen von DisplayMetrics, vorausgesetzt, Sie haben Webview Breite fast gleich Telefon Bildschirmgröße und Höhe fast gleich Höhe des Telefons Bildschirmgröße.

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = (int) displayMetrics.heightPixels*0.9;
int width = displayMetrics.widthPixels;

0voto

Zala Janaksinh Punkte 2899

Wenn Sie die Höhe und Breite Ladezeit erhalten möchten, können Sie es nicht bekommen, weil Ladezeit kann es nicht bekommen. Ich schlage vor, das Webview-Touchevent zu verwenden und die Höhe und Breite zu ermitteln. Andernfalls verwenden Sie eine andere Ansicht Klick-Ereignis und erhalten die Höhe und Breite.

webView.getWidth();
webView.getHeight();

Verwenden Sie dies.

0voto

Gor Punkte 81

Ich hatte das gleiche Problem. Ich habe einfach initWebView Methode in onWindowFocusChangedt .

public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    initWebView();
}

private void initWebView(){
    if(isOnline()){
        venueWebView = (WebView) findViewById(R.id.venueWebView);
        String url = "some url";
        int viewWight = venueWebView.getWidth();
        int viewHeight = venueWebView.getHeight();
        venueWebView.loadUrl(url);
    }

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