Android Webview在PageFinished事件上返回零高度和宽度

Android Webview在PageFinished事件上返回零高度和宽度,android,android-webview,Android,Android Webview,我正在尝试在android中将webview转换为位图。但是webview的高度和宽度始终为零 代码如下: String unescaped = StringEscapeUtils.unescapeHtml4(b .getString("issueDescription")); try { customHtml = new String(unescaped.getBytes("ISO-8859-1"), "UTF-8");

我正在尝试在android中将webview转换为位图。但是webview的高度和宽度始终为零

代码如下:

String unescaped = StringEscapeUtils.unescapeHtml4(b
                .getString("issueDescription"));
        try {
            customHtml = new String(unescaped.getBytes("ISO-8859-1"), "UTF-8");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        customHtml = "<link rel='Stylesheet' href='index.css'/>" + customHtml;
        webView = (WebView) findViewById(R.id.issueDescription);

        webView.loadDataWithBaseURL("file:///android_asset/", customHtml, null,
                "utf-8", null);

    webView.setWebViewClient(new WebViewClient() {
                 @Override      
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                    int mWidth = view.getWidth();
                    int mHeight = view.getHeight();
                    Picture bmp1 = view.capturePicture();
                    PictureDrawable pd1 = new PictureDrawable(bmp1);
                    Bitmap bitmap1 = Bitmap.createBitmap(pd1.getIntrinsicWidth(),
                            pd1.getIntrinsicHeight(), Config.ARGB_8888);
                }
            });
String unescaped=StringEscapeUtils.unescapethml4(b)
.getString(“发布说明”);
试一试{
customHtml=新字符串(unescaped.getBytes(“ISO-8859-1”),“UTF-8”);
}捕获(不支持的编码异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
customHtml=“”+customHtml;
webView=(webView)findViewById(R.id.IssuedDescription);
webView.loadDataWithBaseURL(“file:///android_asset/,自定义HTML,空,
“utf-8”,空);
setWebViewClient(新的WebViewClient(){
@凌驾
公共void onPageFinished(WebView视图,字符串url){
super.onPageFinished(视图、url);
int mWidth=view.getWidth();
int mHeight=view.getHeight();
Picture bmp1=view.capturePicture();
Picturedravable pd1=新的Picturedravable(bmp1);
位图bitmap1=Bitmap.createBitmap(pd1.getIntrinsicWidth(),
pd1.getIntrinsicHeight(),Config.ARGB_8888);
}
});
根据
onPageFinished()
如果使用方法
loadData()
loadDataWithBaseURL
,则回调方法不起作用


在完全加载之前过早调用
getWidth()
是一个计时问题。我的建议是在需要
getWidth()
数据之前,提前加载webview数据。例如,加载webview数据
onCreate()
,并使其对不知道的用户不可见。您可以稍后调用
getWidth()
如果您想在加载内容后获得原始高度,可以使用下面的代码。虽然该代码已被弃用,但它仍能完美地工作

webview.setPictureListener(new WebView.PictureListener() {
    @Override
    public void onNewPicture(WebView webView, @Nullable Picture picture) {
        int height = webview.getContentHeight();
        int height1 = webview.getMeasuredHeight();
        int height2 = webview.getHeight();
    }
});

您是否像webview一样加载url。加载url(“);?否,我正在从数据库获取html内容。请尝试使用“setWebChromeClient”而不是“setWebViewClient”