Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 不起作用_Android_Android Viewpager_Android Recyclerview_Onfling - Fatal编程技术网

Android 不起作用

Android 不起作用,android,android-viewpager,android-recyclerview,onfling,Android,Android Viewpager,Android Recyclerview,Onfling,我有一个ViewPager它保存着一个RecyclerView我在RecyclerView的项目中添加了一个OnTouchListener到一个图像视图中,试图使用GestureDetector.SimpleOnGestureListener检测触摸。但是我无法获取onFling事件。我怀疑这是因为RecyclerView或ViewPager捕捉到了运动事件。如何修复它?我的代码(虽然很简单): 设置oun touch: public VoiceItemHolder(View view, Ges

我有一个
ViewPager
它保存着一个
RecyclerView
我在
RecyclerView
的项目中添加了一个
OnTouchListener
到一个图像视图中,试图使用
GestureDetector.SimpleOnGestureListener
检测触摸。但是我无法获取
onFling
事件。我怀疑这是因为
RecyclerView
ViewPager
捕捉到了运动事件。如何修复它?
我的代码(虽然很简单):

设置oun touch:

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
,并返回
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;
}