Android 解决Gallery下ScrollView滑动事件冲突
在Gallery下,里面内容过长超出屏幕,这时我们可以用ScrollView来滚动,但是这样做了以后,会发现一个问题,Gallery的滑动事件和ScrollView的滑动事件起冲突,这时我们可以自定义Gallery控件来避免这个问题:
下面贴出代码:
import android.content.Context; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.MotionEvent; import android.widget.Gallery; public class TestGallery extends Gallery { private float gTouchStartX; private float gTouchStartY; public TestGallery(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public TestGallery(Context context, AttributeSet attrs) { super(context, attrs); } public TestGallery(Context context) { super(context); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { int action = ev.getAction(); switch(action){ case MotionEvent.ACTION_DOWN: gTouchStartX = ev.getX(); gTouchStartY = ev.getY(); super.onTouchEvent(ev); break; case MotionEvent.ACTION_MOVE: final float touchDistancesX = Math.abs(ev.getX()-gTouchStartX); final float touchDistancesY = Math.abs(ev.getY()-gTouchStartY); if(touchDistancesY *2 >= touchDistancesX){ return false; }else{ return true; } case MotionEvent.ACTION_CANCEL: break; case MotionEvent.ACTION_UP: break; } return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if(e2.getX() > e1.getX()){ onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, null); }else{ onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, null); } return false; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)