Android ScrollView嵌套横向滑动控件时冲突问题
发布时间 - 2026-01-11 02:40:25 点击率:次前言:今天在开发的时候遇到这样的问题,最外层是ScrollView,里面嵌套了一个横向滑动的日历控件,在滑动日历的时候很卡顿。看到这种问题,自然而然的就会想到scrollview和其他可滑动控件的冲突问题。

解决思路
用户的左右滑动操作被最外层的scrollView控件处理掉了,所以只要让scrollview对左右滑动事件不监听,让其子控件处理左右滑动事件 。重写scrollview的onInterceptTouchEvent方法,当上下滑动时不处理即可。
代码如下
public void setOnScollChangedListener(OnScollChangedListener onScollChangedListener) {
this.onScollChangedListener = onScollChangedListener;
}
@Override
protected void onScrollChanged(int x, int y, int oldx, int oldy) {
super.onScrollChanged(x, y, oldx, oldy);
if (onScollChangedListener != null) {
onScollChangedListener.onScrollChanged(this, x, y, oldx, oldy);
}
}
public interface OnScollChangedListener {
void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
xDistance = yDistance = 0f;
xLast = ev.getX();
yLast = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
final float curX = ev.getX();
final float curY = ev.getY();
xDistance += Math.abs(curX - xLast);
yDistance += Math.abs(curY - yLast);
xLast = curX;
yLast = curY;
/**
* X轴滑动距离大于Y轴滑动距离,也就是用户横向滑动时,返回false,ScrollView不处理这次事件,
* 让子控件中的TouchEvent去处理,所以横向滑动的事件交由子控件处理, ScrollView只处理纵向滑动事件
*/
if (xDistance > yDistance) {
return false;
}
}
return super.onInterceptTouchEvent(ev);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# ScrollView嵌套横向滑动
# ScrollView
# 横向滑动嵌套
# Android 一个日历控件的实现代码
# Android实现日历控件示例代码
# Android学习教程之日历控件使用(7)
# Android使用GridLayout绘制自定义日历控件
# Android自定义日历控件实例详解
# Android开源堆叠滑动控件仿探探效果
# Android自定义View实现随手势滑动控件
# Android仿微信列表滑动删除之可滑动控件(一)
# Android实现IOS相机滑动控件
# Android自定义日历滑动控件
# 就会
# 最外层
# 掉了
# 重写
# 他可
# 要让
# 自然而然
# 大家多多
# 其子
# brush
# java
# class
# br
# pre
# public
# onScollChangedListener
# Override
# protected
# void
# setOnScollChangedListener
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在服务器上三步完成建站并提升流量?
如何登录建站主机?访问步骤全解析
如何快速上传建站程序避免常见错误?
使用spring连接及操作mongodb3.0实例
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
详解Huffman编码算法之Java实现
微信小程序 配置文件详细介绍
Python文件流缓冲机制_IO性能解析【教程】
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
如何在建站宝盒中设置产品搜索功能?
微信小程序 HTTPS报错整理常见问题及解决方案
如何在Windows虚拟主机上快速搭建网站?
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
Laravel怎么为数据库表字段添加索引以优化查询
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
lovemo网页版地址 lovemo官网手机登录
JavaScript如何实现音频处理_Web Audio API如何工作?
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
南京网站制作费用,南京远驱官方网站?
详解阿里云nginx服务器多站点的配置
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
大同网页,大同瑞慈医院官网?
青岛网站建设如何选择本地服务器?
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
EditPlus中的正则表达式 实战(4)
如何快速生成ASP一键建站模板并优化安全性?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
iOS中将个别页面强制横屏其他页面竖屏
详解Android图表 MPAndroidChart折线图
5种Android数据存储方式汇总
电商网站制作价格怎么算,网上拍卖流程以及规则?
如何在阿里云域名上完成建站全流程?
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
html5的keygen标签为什么废弃_替代方案说明【解答】
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
在线制作视频网站免费,都有哪些好的动漫网站?
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
在线制作视频的网站有哪些,电脑如何制作视频短片?
详解Oracle修改字段类型方法总结
Android滚轮选择时间控件使用详解
如何用已有域名快速搭建网站?
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Laravel如何配置Horizon来管理队列?(安装和使用)
如何在Tomcat中配置并部署网站项目?

