在页面加载后使用垂直滚动获取Android WebView内容宽度

时间:2013-10-29 12:46:13

标签: android webview

使用java加载垂直滚动的网页后,有没有办法获得Android WebView内容宽度?

3 个答案:

答案 0 :(得分:7)

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

更新:我忘了提到这只有在内容比网页视图更大的情况下才能正常工作。

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。