欢迎来到代码驿站!

Android代码

当前位置:首页 > 移动开发 > Android代码

Android ListView的item中嵌套ScrollView的解决办法

时间:2021-07-06 10:08:47|栏目:Android代码|点击:

 前沿:有时候,listview 的item要显示的字段比较多,考虑到显示问题,item外面不得不嵌套ScrollView来实现,于是问题来了,当listview需要做点击事件时,由于ScrollView的嵌套使用,拦截了listvew点击事件:只好重写listview来实现了。

/**
* 
* @author 作者:易皇星
* 
* @da2016年10月24日 时间:
* 
* @toTODO 类描述: 解决 ListView中嵌套ScrollView,ScrollView拦截ListView的Item点击事件的解决办法
* 
* 
* 在listview中嵌套ScrollView,发现横滑竖滑都正常,但是无法单击Listview的Item。查询Android分发机制后解决,继承Listview重写Listview的onInterceptTouchEvent。
* 
* onInterceptTouchEvent中总是调用listview的onTouchEvent保证listview的事件都执行,
* super.onInterceptTouchEvent(ev)不会拦截需要传递给ScrollView的横滑。
*/
public class MyListView extends ListView {
private int flag = 0;
private float StartX;
private float StartY;
public MyListView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MyListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public MyListView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// 总是调用listview的touch事件处理
onTouchEvent(ev);
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
StartX = ev.getX();
StartY = ev.getY();
return false;
}
if (ev.getAction() == MotionEvent.ACTION_MOVE) {
float ScollX = ev.getX() - StartX;
float ScollY = ev.getY() - StartY;
// 判断是横滑还是竖滑,竖滑的话拦截move事件和up事件(不拦截会由于listview和scrollview同时执行滑动卡顿)
if (Math.abs(ScollX) < Math.abs(ScollY)) {
flag = 1;
return true;
}
return false;
}
if (ev.getAction() == MotionEvent.ACTION_UP) {
if (flag == 1) {
return true;
}
return false;
}
return super.onInterceptTouchEvent(ev);
}
}

上一篇:Android使用ListView批量删除item的方法

栏    目:Android代码

下一篇:android耳机左右声道接反具体修正方法

本文标题:Android ListView的item中嵌套ScrollView的解决办法

本文地址:http://www.codeinn.net/misctech/153342.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有