我是xamarin的新手,我试图通过创建自定义Viewpager来禁用滑动,但是我在Viewpager中找不到触摸监听器界面。有什么办法吗?

public class CustomViewPager : ViewPager
 {
        Context _context;

        public CustomViewPager(Context context) : base(context)
        {
            _context = context;
        }

        public CustomViewPager(Context context, IAttributeSet arg1) : base(context, arg1)
        {
            _context = context;
        }

        public bool IsPagerDisabled { get; set; }

        /*public override Boolean OnTouchEvent(MotionEvent event)
        {
            if (!IsPagerDisabled)
            {
                return base.OnTouchEvent(event);
            }
            else
            {
                return false;
            }
        }*/
    }

最佳答案

我最近做了一个类似的实现,这似乎很吸引人:

using Android.Content;
using Android.Support.V4.View;
using Android.Views;

public class LockableViewPager : ViewPager
{
    public bool SwipeLocked { get; set; }

    Context mContext;

    public LockableViewPager(Context context) : base(context)
    {
        Init(context, null);
    }
    public LockableViewPager(Context context, Android.Util.IAttributeSet attrs) : base(context, attrs)
    {
        Init(context, attrs);
    }
    private void Init(Context ctx, Android.Util.IAttributeSet attrs)
    {
        mContext = ctx;
    }

    public override bool OnTouchEvent(MotionEvent ev)
    {
        return !SwipeLocked && base.OnTouchEvent(ev);
    }

    public override bool OnInterceptTouchEvent(MotionEvent e)
    {
        return !SwipeLocked && base.OnInterceptTouchEvent(e);
    }

    public override bool CanScrollHorizontally(int direction)
    {
        return !SwipeLocked && base.CanScrollHorizontally(direction);
    }

}


如何使用它?

在xml中:

<_yourNameSpace.LockableViewPager
  auto:SwipeLocked="true"


汽车在哪里

xmlns:auto="http://schemas.android.com/apk/res-auto"


在代码中:

LockableViewPager viewpager= new LoackableViewpager();
Viewpager.SwipeLocked=true;

10-08 03:12