我正在实现一个WebView,它可以根据内容高度调整其高度.我试着做以下事情:
WebView view = new WebView(context); view.loadData(htmlString,"text/html","utf-8"); view.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView view,String url) { super.onPageFinished(view,url); Log.d("2",view.getContentheight() + ""); // Set the height of the webview to view.getContentHeight() here? } }); Log.d("1",view.getContentHeight() + "");
其中htmlString是HTML格式的String.
但是两个Logs都返回0.
我不确定我做的是否正确.如何知道内容高度,然后相应地设置WebView的高度?
解决方法
这是因为onPageFinished回调意味着WebView已经完成从网络读取字节,就是这样.在onPageFinished被触发时,页面可能甚至还没有被解析.
如果您的webview的高度设置为wrap_contents,那么您可以执行以下操作:
WebView v = new WebView() { @Override public void onSizeChanged(int w,int h,int ow,int oh) { super.onSizeChanged(w,h,ow,oh); // don't forget this or things will break! Log.d(TAG,"WebView height" + getContentHeight()); } };
如果您的webview不是wrap_contents,那么一个选项是执行josedlujan在his answer中为这个问题提出的建议并从JavaScript中获取高度.
另一个选择是使用已弃用的PictureListener:
webview.setPictureListener(new PictureListener() { int prevIoUsHeight; @Override public void onNewPicture(WebView w,Picture p) { int height = w.getContentHeight(); if (prevIoUsHeight == height) return; prevIoUsHeight = height; Log.d(TAG,"WebView height" + height); } });
原文地址:https://www.jb51.cc/android/308630.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。