将ViewFilpper组建封装成一个View出现的onScroll() and onFlipping()方法无法响应事件的解决方案

问题:


公司让我将所有的视图部分封装成一个控件,将来整个项目就直接new一下我的类就可以了,而在封装这个视图的时候,当然此视图里面包含ViewFlipper组件,实现了OnGestureListener接口,主要问题出现在OnGestureListener接口里面的方法实现时无法响应事件,这个接口需要实现onDown、onFling、onLongPress、onScroll、onShowPress、onSingleTapUp共6个方法,只有onFling、onScroll方法无法响应事件,而且都是滑动触摸事件,其它事件都可以正常响应。


解决方案:


在调用此自定义组件的Activity里面重写OnTouchEvent方法,实现内容为:

@Override
	public boolean onTouchEvent(MotionEvent event) {
		// TODO Auto-generated method stub
		// return this.detector.onTouchEvent(event);
		return helpView.onTouchEvent(event);
	}

helpView是我做的那个自定义控件的对象,当然我封装的自定义控件里面也必须重写OnTouchEvent方法,方法里面的内容是调用
return this.detector.onTouchEvent(event);
我一直没有明白,既然其它事件都可以获取到,为什么就这两个方法的事件获取不到!我想可能是被Activity阻截了,所以需要调用
return helpView.onTouchEvent(event);将事件传给自定义View里面,解释矛盾牵强,只能暂时这么理解着,这个问题记得我在做键盘事件处理的时候也遇到过,处理办法也是在调用的Activity里面重写键盘事件,将事件传递给自定义View里面。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值