大佬教程收集整理的这篇文章主要介绍了Android ListView的item中嵌套ScrollView的解决办法,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
前沿:有时候,listview 的item要显示的字段比较多,考虑到显示问题,item外面不得不嵌套ScrollView来实现,于是问题来了,当listview需要做点击事件时,由于ScrollView的嵌套使用,拦截了listvew点击事件:只好重写listview来实现了。@H_301_1@
/** * * @author 作者:易皇星 * * @da2016年10月24日 时间: * * @toTODO 类描述: 解决 ListView中嵌套ScrollView,ScrollView拦截ListView的Item点击事件的解决办法 * * * 在listview中嵌套ScrollView,发现横滑竖滑都正常,但是无法单击Listview的Item。@L_696_8@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; // 判断是横滑还是竖滑,竖滑的话@L_657_3@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中嵌套ScrollView的解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!@H_301_1@
以上是大佬教程为你收集整理的Android ListView的item中嵌套ScrollView的解决办法全部内容,希望文章能够帮你解决Android ListView的item中嵌套ScrollView的解决办法所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。