美文网首页Android开发点滴
CoordinatorLayout+WebView高度问题

CoordinatorLayout+WebView高度问题

作者: 艾伦宇 | 来源:发表于2019-03-13 14:12 被阅读0次
image

产品需要的设计图如上,简单来说是个很常见的文章详情样式。

特别在于:

  1. 文章内容是h5
  2. 下面紧跟着评论列表
  3. 滚动之后,文章的标题需要置顶

根据需求很容易就会想到用CoordinatorLayout+AppBarLayout+TabLayout来实现,然后主体部分用RecycleView,那么H5就放在RecycleView的头部了。

想法很美好,现实很残酷!

很想当然的将WebView的高度设置成了WrapContent,结果就出问题了。H5部分的高度要么是加载不全,要么是太高了,以至于都看不到下面的评论列表了。

这是因为WebView本身也是能滑动的,有点类似ScrollView,不能用WrapContent来设置高度。这就导致WebView也不知道自己要显示多高了。

Coordinator layout 和 WebView这篇文章中有说明

建议:不要将webview放在NestedScrollView中。 不要在wrap_contents模式下使用webview。 让webview滚动网页本身。

如果结论是这样,岂不是无法实现这个效果了。
结果就遍找应用市场上的各大app,结果发现大多文章详情页,评论列表确实不紧跟着。都是用一个按钮去做跳转。除了。。。

对,除了今日头条!

那就好说了,二话不说,直接研究今日头条,并找到了个模仿今日头条的github地址。中间其实还有很多曲折就不多说了,大致发现问题在于WebView需要先指定高度,然后才能知道真实高度,这时再去重新设置成真实高度即可。

  //此处是重点
    rootWebView.viewTreeObserver.addOnPreDrawListener(object : ViewTreeObserver.OnPreDrawListener {
      override fun onPreDraw(): Boolean {
        //往大了拉伸
        var newWebHeight = mWebView?.contentHeight!!
        if (newWebHeight < resizeHeight){
          newWebHeight = resizeHeight
        }

        if (oldWebHeight >= newWebHeight){
          return true
        }
        val param = mWebView?.layoutParams
        param?.height = newWebHeight
        mWebView?.layoutParams = param
        Log.i("NewsWebView","newWebHeight:$newWebHeight,oldWebHeight:$oldWebHeight")
        oldWebHeight = newWebHeight
        return true
      }

    })

最后问题是解决了,但还有个疑问就是为什么只有OnPreDraw回调时才能去设置高度,而不是在任意时候?
代码如下:
github

1552459062337.gif

相关文章

  • CoordinatorLayout+WebView高度问题

    产品需要的设计图如上,简单来说是个很常见的文章详情样式。 特别在于: 文章内容是h5 下面紧跟着评论列表 滚动之后...

  • 高度问题

    可以解决具体的问题,但是问题的立意要高。

  • DecorView高度问题

    问题描述 在最近的项目中,遇到一个奇葩问题。起初为了解决打开app白屏或者黑屏问题,在SplashActivity...

  • UITableView高度问题

    原理:TableView继承自UIScrollView。所以先要求要有contentView的尺寸,然后具体显示某...

  • tableView性能优化

    一: cell高度问题: 固定高度的cell 不定高度cell,实现代理

  • 清除浮动

    盒子高度问题

  • iOS小知识点(UIPickerView高度问题;textFid

    UIPickerView高度问题 UIPickerView只有三个高度, heights for UIPicker...

  • TableHeaderView 高度的问题

    今天用xib 添加tableheaderview 自适应高度 效果出来 发现高度一直不对 会有一些空白在下边 找了...

  • TextView高度测量问题

    最近被TextView的高度测量问题搞得好烦,最终在http://blog.csdn.net/tianlan996...

  • css高度塌陷问题

    今天百度了一下网上关于解决高度塌陷的问题,也来做个汇总吧! 首先,应该解释一下什么是高度塌陷吧~,那么什么是高度塌...

网友评论

    本文标题:CoordinatorLayout+WebView高度问题

    本文链接:https://www.haomeiwen.com/subject/asgzpqtx.html