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.
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.
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
//=========
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;
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.
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 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.