关于ListView中使用GestureDetector冲突的解决办法
2016-03-02 11:56
471 查看
因为实在写的太好,所以转载过来:
关于ListView中使用GestureDetector冲突的解决办法
关于ListView中使用GestureDetector冲突的解决办法
在做OnGestureListener手势滑动界面的时候,会遇到这样的问题,就是当界面中含有ListView的时候,OnGestureListener的界面滑动就被ListView拦截并消费掉了。 为了解决这个问题需要重写ListView的OnTouchListener接口:
Java代码
ListView listView=(ListView)findViewById(R.id.listViewBeside);
listView.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
leftPanel.getGestureDetector().onTouchEvent(event);//;//在这里先处理下你的手势左右滑动事件
return false;
}
});
listView.setOnItemClickListener(new ListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Log.i("tag", "position=="+position);
}
});
因为我的手势是定义在leftPanel这个View中的,所以是leftPanel.getGestureDetector().onTouchEvent(event);。如果你的手势是写在Activity中的,那么就是mGestureDetector.onTouchEvent(event);
这样既能保证在ListView上实现拖动,又能保证ListView上的Item Click.
注:我的项目里面因为是在fragment里面使用了滑动的监听事件,所以重写的方法如下:
// 为了避免listview上下滚动和手势左右滑动引起的事件冲突,重写该方法 list.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { System.out.println("上下滑动和左右滑动是否都会调用呢" + event); System.out.println("上下滑动和左右滑动是否都会调用呢" + event); System.out.println("上下滑动和左右滑动是否都会调用呢" + event); getActivity().onTouchEvent(event); // leftPanel.getGestureDetector().onTouchEvent(event);// 需要这样写! return false; } });上述的意思就是当你监听了listview的点击事件时,进入你需要监听的view的点击处理方法中。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories