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

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

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

场景:

我们有时候需要弹一些必读公告,但是呢可能会要去你看完之后才可以关掉,所以就需要滚动到底部才显示关闭按钮,而公告什么的往往又是基于富文本的,那么在展示在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

分享给朋友:

相关文章

ab压力测试命令(在线ddos免费测压平台)

ab压力测试命令(在线ddos免费测压平台)

ab 是apache对 http服务器进行压力测试的工具,它可以测试出服务器每秒可以处理多少请求。本文记录mac版本安装 ab 的步骤以及遇到的坑。 下载 进入 apache ab官网 下载页面。 安装 brew 安装 因为笔者的操作系统…

个人云存储哪个品牌好(云存储十大品牌排行榜)

个人云存储哪个品牌好(云存储十大品牌排行榜)

最近越来越多的视频博主开始在安利“私有云”存储,很多人觉得听起来偏硬核,平时也用不上,就没有过多去了解。可能是“云”这个概念容易让人觉得门槛很高,其实私有云没有大家想象中那么复杂,它的用法也可以很简单,并且能给我们的移动生活带来很多便利。…

长尾词挖掘免费工具(关键词挖掘方法)

长尾词挖掘免费工具(关键词挖掘方法)

最近有几个徒弟找我反馈、说权重站不太好做。有没有最新的干货可以讲一波,能不能讲讲流量站与权重站的区别,本着解决兄弟们问题的原则,我们给大家讲讲权重站与流量站的区别,并且讲讲最近问的比较多的几个问题,希望徒弟们可以认真看!更希望看完有所收获!…

怎么进去usb启动设置(usb启动安装系统的步骤)

怎么进去usb启动设置(usb启动安装系统的步骤)

在使用u盘装系统前,我们都需要将u盘设置为第一启动项,这样才能进入PE安装系统。但是有用户在bios设置里却找不到u盘选项,遇到这个问题可让没有安装系统经验的用户头疼了。接下来,快启动小编就为大家带来详细的解决办法。有需要的朋友赶紧收藏学习…

ipad哪款好性价比高(ipad所有型号及价格)

ipad哪款好性价比高(ipad所有型号及价格)

如今,iPad已经很普遍了,但适合您的iPad 比以前更难,因为现在有太多型号可供选择。 过去,如果你想要 iPad,你就买了iPad。但是现在,如果您想要一台新iPad,您至少有四种型号可供选择,每种型号都有自己的优点和缺点。 本文通过…