无法覆盖xamarin.android中的OnInterceptTouchEvent方法

时间:2019-02-09 10:23:07

标签: xamarin xamarin.android

我想重写OnInterceptTouchEvent方法。我正在使用listview并尝试在其上实现手势检测器,但是由于我在子视图上应用了单击侦听器,因此fling方法返回null。我发现此方法可以解决我的问题,但是我无法在活动中覆盖它。

@Override
    public boolean onInterceptTouchEvent(MotionEvent motionEvent) {

        return true;
}

如果还有其他方法可以解决此问题,请告诉我。

2 个答案:

答案 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);
}