热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

解决Android嵌套H5,自定义控制页面能否实现下拉刷新功能

目录使用场景问题描述思路分析解决方案结语使用场景关于Android嵌套H5页面使用下拉刷新功能的问题:当我们在Android中使用第三方框架SmartRefreshL




目录


  • 使用场景
  • 问题描述
  • 思路分析
  • 解决方案
  • 结语



在这里插入图片描述
使用场景

  关于Android嵌套H5页面使用下拉刷新功能的问题:当我们在Android中使用第三方框架SmartRefreshLayout实现App的下拉刷新功能时,如果H5页面有部分功能设计到上下滑动的话,就会引起“误触”下拉刷新功能的操作,那么我们应该怎么去解决这个问题呢?




问题描述

  由于我们使用的是Android的下拉刷新,并非是H5的下拉刷新,当H5页面中有个别弹窗页面(比如:地址上下滑动选择组件),遇到这个情况的都应该知道,如果不做处理,当你在使用H5地址选择页面的时候,你滑动地址选择的瞬间,由于是上下滑动,因此也会触发Android的下拉刷新,虽然下拉幅度不大,但是这个原本是不应该进行滑动的页面,它也确实因为你上下滑动选择地址的时候“误触”了下拉操作,即使它不是真正意义上的下拉刷新,但是出现这个拉动的动作,也是会引起用户体验满不好的,下面请看大致思路实现!




思路分析

  相信有点熟悉Android开发的朋友在看思路分析前,已经有了自己的思路:直接在初始化下拉刷新initRefresh()方法中验证你想要的页面能不能执行下拉操作不就行了吗?实践告诉你这个是无法实现的,因为下拉刷新方法在初始化的时候,已经实例过一次,后续调用的时候,并不会重复执行setOnRefreshListener监听事件,只是执行它里面的onRefresh方法,这个执行原理在此就不做详细分析了,涉及到底层原理,生命周期等问题,感兴趣的自行去研究探讨!

  正确的做法可以在webView.setWebViewClient里面的onPageFinished(WebView view, String url)方法实现,由于onPageFinished(WebView view, String url)中url会获取到每次点击请求的路径,所以可以该方法里面针对路径判断来区分哪个页面禁用下拉刷新功能。




解决方案

  根据上述的思路分析,我们可以在Android的webView.setWebViewClient里面的onPageFinished这个方法中实现,具体源码参考下面:

//判断指定页面禁用下拉刷新操作
RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.swipe_refresh);
boolean address = url.contains("填H5页面请求的路由,可以是与众不同的一小段");
if (address) {
refreshLayout.setEnableRefresh(false);//是否启用下拉刷新功能
return;
}
refreshLayout.setEnableRefresh(true);//是否启用下拉刷新功能

  到此就完成了,重新执行app安装,你就会发现,你指定的页面就不能进行下拉刷新的操作了,赶紧去试试吧!祝“码”到成功!


结语

  此方案仅供参考,你可以根据自行的项目需求进行优化,具体实现哪些页面禁用下拉刷新的功能,你就继续添加url.contains就好了。


在这里插入图片描述

创作不易,感谢您的点赞与支持。






推荐阅读
author-avatar
突击手丶罪域
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有