Android ListView中嵌套ScrollView,ScrollView不能滚动
来源:互联网 发布:mysql union 效率 编辑:程序博客网 时间:2024/05/16 08:38
在ListView中嵌套ScrollView时,ScrollView不能滚动,只需要在Adapter中加入下面代码:
holder.itemScroll.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubLogger.w("MySpaceTimeListAdapter", "onTouch event:" + event.getAction());/*addVelocityTracker(event);switch (event.getAction()) {case MotionEvent.ACTION_DOWN: {downX = (int) event.getX();downY = (int) event.getY();break;}case MotionEvent.ACTION_MOVE: {if (Math.abs(getScrollVelocity()) > SNAP_VELOCITY|| (Math.abs(event.getX() - downX) > 2 * mTouchSlop && Math.abs(event.getY() - downY) < 2 * mTouchSlop)) {view.getParent().requestDisallowInterceptTouchEvent(false);} else {view.getParent().requestDisallowInterceptTouchEvent(true);// true表示父类的不可用;}break;}case MotionEvent.ACTION_UP:view.getParent().requestDisallowInterceptTouchEvent(false);recycleVelocityTracker();break;}*/if (event.getAction() == MotionEvent.ACTION_UP) {view.getParent().requestDisallowInterceptTouchEvent(false);} else {view.getParent().requestDisallowInterceptTouchEvent(true);// true表示父类的不可用;}return false;}});
关键代码是:
view.getParent().requestDisallowInterceptTouchEvent(true);// true表示父类的不可用;
屏蔽父控件的Touch Event。
你也可以进一步对Move事件进行判断,特定条件下才屏蔽父控件父控件
<span style="white-space:pre"></span>addVelocityTracker(event);switch (event.getAction()) {case MotionEvent.ACTION_DOWN: {downX = (int) event.getX();downY = (int) event.getY();break;}case MotionEvent.ACTION_MOVE: {if (Math.abs(getScrollVelocity()) > SNAP_VELOCITY|| (Math.abs(event.getX() - downX) > 2 * mTouchSlop && Math.abs(event.getY() - downY) < 2 * mTouchSlop)) {view.getParent().requestDisallowInterceptTouchEvent(false);} else {view.getParent().requestDisallowInterceptTouchEvent(true);// true表示父类的不可用;}break;}case MotionEvent.ACTION_UP:view.getParent().requestDisallowInterceptTouchEvent(false);recycleVelocityTracker();break;}
/** * 速度追踪对象 */private VelocityTracker velocityTracker;private static final int SNAP_VELOCITY = 600;/** * 认为是用户滑动的最小距离 */private int mTouchSlop;/** * 手指按下X的坐标 */private int downX;/** * 手指按下Y的坐标 */private int downY;/** * 添加用户的速度跟踪器 * * @param event */private void addVelocityTracker(MotionEvent event) {if (velocityTracker == null) {velocityTracker = VelocityTracker.obtain();}velocityTracker.addMovement(event);}/** * 移除用户速度跟踪器 */private void recycleVelocityTracker() {if (velocityTracker != null) {velocityTracker.recycle();velocityTracker = null;}}/** * 获取X方向的滑动速度,大于0向右滑动,反之向左 * * @return */private int getScrollVelocity() {velocityTracker.computeCurrentVelocity(1000);int velocity = (int) velocityTracker.getXVelocity();return velocity;}
0 0
- Android ListView中嵌套ScrollView,ScrollView不能滚动
- scrollView中嵌套ListView,ListView不能滚动的问题
- ListView、ScrollView中嵌套的EditText不能滚动的问题
- Android中ScrollView嵌套ListView
- Android ScrollView中嵌套ListView
- Android ScrollView中嵌套ListView
- Android中ScrollView嵌套ListView
- android---ScrollView中嵌套ListView
- Android ScrollView中嵌套ListView
- Android ScrollView中嵌套ListView滚动效果冲突问题解决
- android scrollview 嵌套自适应 listview 自动滚动
- ScrollView嵌套ListView显示不完全、嵌套TextView不能滚动解决办法
- ScrollView嵌套ListView显示不完全、嵌套TextView不能滚动解决办法
- ScrollView嵌套ListView显示不完全、嵌套TextView不能滚动解决办法
- android ScrollView嵌套ListView
- android ScrollView嵌套ListView
- android ScrollView嵌套Listview
- android scrollview 嵌套listview
- “青软杯”安徽科技学院第六届程序设计大赛_非专业组
- Java 中的接口有什么作用?
- CentOS 下安装7-Zip 以及常用的解压命令
- 核心API——Collection
- 【.Net】安装新版本CrystalReports 老程序出现未能加载文件或程序集“CrystalDecisions.CrystalReports.Engine, Version=10.5.37
- Android ListView中嵌套ScrollView,ScrollView不能滚动
- RadioGroup错误用 @OnClick来注释
- JAVA基础笔记
- linux设备上的Onvif 实现20:海康摄像头H264码流错误
- 数字逆转和数的约数个数
- uestc data structure n 秋实大哥与快餐店
- 滚屏到相应位置才加载图片-优化页面访问速度
- 在eclipse上运行Tomcat
- 就看见好看空间认同与认同地方