Android WebView getContentHeight()始终返回0

前端之家收集整理的这篇文章主要介绍了Android WebView getContentHeight()始终返回0前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在实现一个WebView,它可以根据内容高度调整其高度.我试着做以下事情:
  1. WebView view = new WebView(context);
  2. view.loadData(htmlString,"text/html","utf-8");
  3.  
  4. view.setWebViewClient(new WebViewClient() {
  5. public void onPageFinished(WebView view,String url) {
  6. super.onPageFinished(view,url);
  7. Log.d("2",view.getContentheight() + "");
  8. // Set the height of the webview to view.getContentHeight() here?
  9. }
  10. });
  11.  
  12. Log.d("1",view.getContentHeight() + "");

其中htmlString是HTML格式的String.

但是两个Logs都返回0.

我不确定我做的是否正确.如何知道内容高度,然后相应地设置WebView的高度?

解决方法

这是因为onPageFinished回调意味着WebView已经完成从网络读取字节,就是这样.在onPageFinished被触发时,页面可能甚至还没有被解析.

如果您的webview的高度设置为wrap_contents,那么您可以执行以下操作:

  1. WebView v = new WebView() {
  2. @Override
  3. public void onSizeChanged(int w,int h,int ow,int oh) {
  4. super.onSizeChanged(w,h,ow,oh); // don't forget this or things will break!
  5. Log.d(TAG,"WebView height" + getContentHeight());
  6. }
  7. };

如果您的webview不是wrap_contents,那么一个选项是执行josedlujan在his answer中为这个问题提出的建议并从JavaScript中获取高度.

另一个选择是使用已弃用的PictureListener:

  1. webview.setPictureListener(new PictureListener() {
  2. int prevIoUsHeight;
  3. @Override
  4. public void onNewPicture(WebView w,Picture p) {
  5. int height = w.getContentHeight();
  6. if (prevIoUsHeight == height) return;
  7. prevIoUsHeight = height;
  8. Log.d(TAG,"WebView height" + height);
  9. }
  10. });

猜你在找的Android相关文章