我想重写OnInterceptTouchEvent方法。我正在使用listview并尝试在其上实现手势检测器,但是由于我在子视图上应用了单击侦听器,因此fling方法返回null。我发现此方法可以解决我的问题,但是我无法在活动中覆盖它。
@Override
public boolean onInterceptTouchEvent(MotionEvent motionEvent) {
return true;
}
如果还有其他方法可以解决此问题,请告诉我。
答案 0 :(得分:1)
活动不是视图类,因此没有OnInterceptTouchEvent
方法,
OnInterceptTouchEvent
是ViewGroup类的函数,可拦截触摸事件。
因此您可以自定义ListView,然后重写OnInterceptTouchEvent
方法,如下所示:
class MyListView : ListView
{
public MyListView(Context context) : base(context)
{
}
public MyListView(Context context, IAttributeSet attrs) : base(context, attrs)
{
}
public MyListView(Context context, IAttributeSet attrs, int defStyleAttr, int defStyleRes) : base(context, attrs, defStyleAttr, defStyleRes)
{
}
public override bool OnInterceptTouchEvent(MotionEvent e)
{
return base.OnInterceptTouchEvent(e);
}
}
答案 1 :(得分:0)
当您应该使用等效的C#时,您正在尝试以Java方式覆盖它。
此外,拦截触摸事件也是ViewGroup层次结构的一部分,因此在您的活动中不可用。
ViewGroup基本上是一个类,它像View持有者一样将一堆小部件保存在一起。
尝试将以下内容粘贴到自定义ListView中,然后使用该ListView来实现手势检测器
public override bool OnInterceptTouchEvent(MotionEvent ev)
{
return base.OnInterceptTouchEvent(ev);
}