onFling 不工作
onFling not working
我有一个 ViewPager
,其中包含一个 RecyclerView
我在 RecyclerView
的项目内的图像视图中添加了一个 OnTouchListener
,尝试使用 GestureDetector.SimpleOnGestureListener
但我无法获得 onFling
事件。我怀疑这是因为 RecyclerView
或 ViewPager
捕获了运动事件。我该如何解决?
我的代码(虽然很简单):
public class MyClickListener extends GestureDetector.SimpleOnGestureListener{
public MyClickListener(){
}
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
Log.d("aaa", "show press");
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
Log.d("aaa", "tapup");
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
Log.d("aaa", "scroll");
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
Log.d("aaa", "long press");
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
Log.d("aaa", "fling");
return false;
}
设置触摸:
public VoiceItemHolder(View view, GestureDetector.OnGestureListener listener) {
super(view);
icon = (CircleButton) view.findViewById(R.id.icon_iv);
touchListener = new GestureDetectorCompat(view.getContext(), listener);
icon.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (touchListener != null)
touchListener.onTouchEvent(event);
return false;
}
回答我自己的问题感觉有点尴尬:)
如果你在视图组中有一个视图,并且你想在内部视图中获得 onFling
,你应该覆盖视图组的 onInterceptTouchEvent
和 return false
我有一个 ViewPager
,其中包含一个 RecyclerView
我在 RecyclerView
的项目内的图像视图中添加了一个 OnTouchListener
,尝试使用 GestureDetector.SimpleOnGestureListener
但我无法获得 onFling
事件。我怀疑这是因为 RecyclerView
或 ViewPager
捕获了运动事件。我该如何解决?
我的代码(虽然很简单):
public class MyClickListener extends GestureDetector.SimpleOnGestureListener{
public MyClickListener(){
}
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
Log.d("aaa", "show press");
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
Log.d("aaa", "tapup");
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
Log.d("aaa", "scroll");
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
Log.d("aaa", "long press");
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
Log.d("aaa", "fling");
return false;
}
设置触摸:
public VoiceItemHolder(View view, GestureDetector.OnGestureListener listener) {
super(view);
icon = (CircleButton) view.findViewById(R.id.icon_iv);
touchListener = new GestureDetectorCompat(view.getContext(), listener);
icon.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (touchListener != null)
touchListener.onTouchEvent(event);
return false;
}
回答我自己的问题感觉有点尴尬:)
如果你在视图组中有一个视图,并且你想在内部视图中获得 onFling
,你应该覆盖视图组的 onInterceptTouchEvent
和 return false