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

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

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

场景:

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

分享给朋友:

相关文章

到昨天为止,全国新冠状型病毒最新情况介绍

到昨天为止,全国新冠状型病毒最新情况介绍

4月11日0—24时,31个省(自治区、直辖市)和新疆生产建设兵团报告新增确诊病例99例,其中97例为境外输入病例,2例为本土病例(黑龙江2例);无新增死亡病例;新增疑似病例49例,均为境外输入病例(上海43例,黑龙江3例,内蒙古2例,吉林…

曹德旺的经典语录分享

曹德旺的经典语录分享

曹德旺,福耀玻璃集团创始人、董事长。中国反倾销胜诉第一人、中国首善、安永企业家奖首位华人获得者 。福耀玻璃目前是中国第一、世界第二大汽车玻璃供应商。他是不行贿的企业家,自称“没送过一盒月饼”,以人格做事;他是行善的佛教徒,从1983年第一次…

小型电冰箱什么牌子好?现在口碑最好的冰箱推荐

小型电冰箱什么牌子好?现在口碑最好的冰箱推荐

海尔冰箱全球公认的质量很不错的冰箱,海尔冰箱优点是:微霜,制冷效果不错;节能省电,保湿效果不错;海尔冰箱是十大品牌之首,全球销量的第一梯队的佼佼者。海尔冰箱外观十分好看,海尔冰箱款式几乎都很新颖,质量好,制冷情况好,用了一段时间,制冷情况稳…

dnf宇宙恶魔怎么打单人机制(单人宇宙恶魔罗什打法攻略)

在DNF游戏中,大家应该都认识宇宙恶魔罗什吧,这是一个非常强的BOSS,很多小伙伴都卡在这里,那么要怎么打呢,感兴趣的小伙伴就跟随小编一起来看看吧。 dnf单人宇宙恶魔罗什攻略 之所以打不过是因为玩家不清楚其机制。 进入BOSS战关卡后,罗…