使用java加载垂直滚动的网页后,有没有办法获得Android WebView内容宽度?
答案 0 :(得分:7)
如果您可以选择扩展已使用的WebView,您还可以尝试受保护的方法computeHorizontalScrollRange()的输出。
更新:我忘了提到这只有在内容比网页视图更大的情况下才能正常工作。
class YourCustomWebView extends WebView {
public YourCustomWebView(Context context) {
super(context);
}
public int getContentWidth()
{
return this.computeHorizontalScrollRange();
}
}
public void onPageFinished(WebView page, String url) {
Log.v(LOG_TAG,"ContentWidth: " + ((YourCustomWebView) page).getContentWidth());
}
答案 1 :(得分:2)
加载HTML后,您需要WebView CONTENTS的宽度和高度。 是的,但没有getContentWidth方法(只有一个视图端口值), 并且getContentHeight()是不准确的!
答案:子类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
//=========
答案 2 :(得分:0)
请检查http://android.pimmos.com/2011/03/24/how-to-retrieve-the-contentwidth-of-a-webview/
有获取内容高度的方法webview.getContentHeight();
。没有方法来获取内容宽度。你可以使用javascript,并使用JavaScriptInterface从javascript获取它。由于您从assets文件夹加载,您可以轻松添加javascript函数并创建一个JavascriptInterface。