gallery中的图片没法点击,或者 glallery中的图片不能滑动但是能点击,用ontouch事件模拟onclick 点击事件

本文详细介绍了在使用ListView Gallery与ViewPager时,如何通过模拟点击事件来解决冲突问题。主要关注于通过触摸事件判断点击位置,并根据位置触发相应的点击行为。文章提供了解决方案和核心代码实现,帮助开发者在复杂布局中有效处理点击事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转: http://www.maxiaoguo.com/shipin/360.html


在项目中用listtview 上边加了一个gallery   listview 外边还加了viewpage  , 总的来说能让ontouch 事件搞死。。。


listview gallery 跟viewpage的冲突解决方法见

http://blog.youkuaiyun.com/codywangziham01/article/details/7732909


现在就直插主题,怎样模拟onclick 事件

@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
downTime = System.currentTimeMillis();
float x = event.getX();
downX = x;
Rect rect = new Rect();
this.getHitRect(rect);
if(x<(rect.right-rect.left)/2){
left = true;
}else{
left = false;
}
return true;
case MotionEvent.ACTION_MOVE:
curX = event.getX();
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
if(event.getX()!=0){
curX = event.getX();
}
if(downTime!=0&&Math.abs(curX-downX)<10){
long del = System.currentTimeMillis()-downTime;
if(del<300){
View view;
LinearLayout item = (LinearLayout) this.getSelectedView();
if(left){
RelativeLayout relativeLayout = (RelativeLayout) item.getChildAt(0);
view = relativeLayout.getChildAt(0);
}else{
RelativeLayout relativeLayout = (RelativeLayout) item.getChildAt(1);
view = relativeLayout.getChildAt(0);
}
if(view!=null){
view.performClick();   /// 这句话是整个的核心啊,,这是拿到view 之后把onclcik 事件传递下去 
}
}
}
downTime = 0;
curX = 0;
downX = 0;
break;
default:
break;
}
return true;
}


这是gallery中的的ontouch 事件,大体是根据时间来算的, <300就是点击事件

注意:。。。。gallery中的items的onclick事件一定要写。。。只是把onclick事件传递下去。

设置完之后再设置clickable为false

viewHolder.lImageView.setClickable(false);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值