当前位置:首页 > 谈天说地

Android WebView如何判断是否滚动到底部

34资源网2022-01-20538
目录
  • 场景:
  • 分析:
  • 实现:
  • 总结

场景:

我们有时候需要弹一些必读公告,但是呢可能会要去你看完之后才可以关掉,所以就需要滚动到底部才显示关闭按钮,而公告什么的往往又是基于富文本的,那么在展示在android上时就要用到webview,基于这个要求就有了判断 webview 判断是否滚动到底部。

分析:

要判断是否到底部那么我们先来分析有哪几种情况,当html文档加载到webview后会有一下两种情况。

webview里的html内容没有填充满,就是无滚动条情况。html内容的高度比webview控件高,这时候就会有滚动条,即有滚动条

对于情况1,没有滚动条我们直接显示关闭按钮就可,但对于第二种有滚动条情况就需要计算高度即:html高度 = webview高度 + 滚动条长度 那么这时就可判断为滚动条到达了底部

实现:

html高度 <= webview高度 + 滚动条长度 即可视为到达底部

注意:必须要控件初始化好后去获取高度,不然获取的高度是0

以下是实现

 x5webview?.let {
    it.webviewclient = object : webviewclient() {
	    override fun onpagefinished(
	           view: webview,
	           url: string
	       ) {
	           super.onpagefinished(view, url)
	           postsafedelayed(1000) {
	               loading_pb.visibility = view.gone
	           }
	           //页面加载完判断是否到底部逻辑
	           view.post {
	                view.measure(0, 0)
	                val htmlcontentheight: int = view.getmeasuredheight()
	                val viewheight: int = view.getheight()
	                //如果html高度小于控件高度,那么说明一屏可以展示下直接显示关闭按钮
	                if(htmlcontentheight <= viewheight){
	                	// todo 显示关闭按钮
	                }else{
	                //这里说明有滚动条,就需要监听滚动事件
	                	view?.setoncustomscrollchangedlistener(object : webview.customscrollchangelistener{
                        override fun onscrollchange(
                            scrollx: int,
                            scrolly: int,
                            oldscrollx: int,
                            oldscrolly: int
                        ) {
                            timber.w("setoncustomscrollchangedlistener 滚动底部,html高度:${htmlcontentheight},scrolly:${scrolly}")
                            //已经处于底端
                            if(htmlcontentheight - (viewheight + scrolly) <= 0){
                                timber.w("setoncustomscrollchangedlistener 到达底部")
                                //todo 到达底部
                            }
                        }
                    })
	                }
                
				}
	       }
	   	}
  }
}

以上就是实现,webview.customscrollchangelistener这个事件是自己在webview上定义的,监听的是webview的onscrollchanged方法下的自定义监听

总结

到此这篇关于android webview如何判断是否滚动到底部的文章就介绍到这了,更多相关android webview滚动到底部内容请搜索萬仟网以前的文章或继续浏览下面的相关文章希望大家以后多多支持萬仟网!

看完文章,还可以扫描下面的二维码下载快手极速版领4元红包

快手极速版二维码

快手极速版新人见面礼

除了扫码领红包之外,大家还可以在快手极速版做签到,看视频,做任务,参与抽奖,邀请好友赚钱)。

邀请两个好友奖最高196元,如下图所示:

快手极速版邀请好友奖励

扫描二维码推送至手机访问。

版权声明:本文由34楼发布,如需转载请注明出处。

本文链接:https://www.34l.com/post/5919.html

分享给朋友:

相关文章

低成本创业好项目,这个可日赚几千元

低成本创业好项目,这个可日赚几千元

这几年创业项目也变得越来越多了,大家都知道,现在靠打工是挣不了什么钱的,所以,很多人宁愿自己创业不想打工。那么,低成本创业项目有哪些呢?下面小编马上为大家推荐一个低成本创业项目,如果你有资源的话,也可以免费去推广操作,做好了日赚几千也是很容…

好文分享,一辈子很短,别懂得太晚!

好文分享,一辈子很短,别懂得太晚!

曾经以为,人是慢慢长大的,后来才知道,人是一瞬间成长的;曾经也以为,人是渐渐变老的,后来才知道,人是一瞬间衰老的。…

虚拟内存太低怎么设置(电脑磁盘空间不足清理步骤)

虚拟内存太低怎么设置(电脑磁盘空间不足清理步骤)

在电脑的平时使用中,经常会出现内存不足的提示,有时可能小伙伴们会疑惑了,明明自己是16G内存的性能为何也能出现这种提示呢?这是当你在运行多个大程序的时候,对内存的需求非常大,当物理内存不能满足需求时,有可能导致程序关闭而数据保存错误。那么在…

融资丨「PPIO边缘云」完成亿元A1轮融资,刷新边缘云领域融资记录

融资丨「PPIO边缘云」完成亿元A1轮融资,刷新边缘云领域融资记录

创业邦获悉,近日,边缘云公司PPIO宣布完成过亿元A1轮融资,由创世伙伴、张江科投、磐霖资本等多家机构联合投资,Pre-A轮投资方蓝驰创投、沸点资本及华业天成继续追加投资,光源资本担任融资财务顾问。这是公司半年内再次获投资人支持,公司A2轮…

知识直播出圈:张朝阳的物理课里 藏着直播的另一种答案

知识直播出圈:张朝阳的物理课里 藏着直播的另一种答案

编者按:本文转自熊出墨请注意,作者彬彬,创业邦经授权转载。 大家都知道,声和光在不同的条件下传播速度会发生变化。但有没有想过,知识、信息的传播也是如此。 1970年,美国传播学者蒂奇纳等人的研究小组提出了知识鸿沟的理论假设:社会经济地位高的…