5

使用java加载垂直滚动网页后,有什么方法可以获取Android WebView内容宽度?

4

3 回答 3

7

如果您可以选择扩展使用的 WebView,您还可以尝试受保护的方法 computeHorizo​​ntalScrollRange() 的输出。

更新:我忘了提到只有在内容大于 webview 时才能正常工作。

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());
}
于 2014-02-25T14:48:53.023 回答
4

加载 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
//=========
于 2016-07-24T19:21:52.353 回答
0

请检查,http://android.pimmos.com/2011/03/24/how-to-retrieve-the-contentwidth-of-a-webview/

webview.getContentHeight();获取内容高度的方法。没有获取内容宽度的方法。您可以使用 javascript 来做到这一点,并使用 JavaScriptInterface 从 javascript 中获取它。由于您是从 assets 文件夹加载的,因此您可以轻松添加 javascript 函数并制作 JavascriptInterface。

于 2013-10-30T06:19:44.957 回答