Xamarin.Android中的HackyViewPager

达斯米科

我正在尝试将适用于PhotoView的HackyViewPager转换为Xamarin.Android的版本,但是现在我无法确定该怎么做。

这是扩展ViewPager的HackyViewPager类

public class HackyViewPager extends ViewPager {

    private boolean isLocked;

    public HackyViewPager(Context context) {
        super(context);
        isLocked = false;
    }

    public HackyViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
        isLocked = false;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if (!isLocked) {
            try {
                return super.onInterceptTouchEvent(ev);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
                return false;
            }
        }
        return false;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (!isLocked) {
            return super.onTouchEvent(event);
        }
        return false;
    }

    public void toggleLock() {
        isLocked = !isLocked;
    }

    public void setLocked(boolean isLocked) {
        this.isLocked = isLocked;
    }

    public boolean isLocked() {
        return isLocked;
    }

}
莫斯塔法·加扎(Mostafa Gazar)

一个简单的解决方案是将Java转换为C#,如下所示

using System;
using Android.Support.V4.View;
using Android.Content;
using Java.Lang;
using Android.Views;
using Android.Util;

public class HackyViewPager : ViewPager
{

    private bool IsLocked { get; set; }

    public HackyViewPager (Context context)
        : base (context)
    {
        IsLocked = false;
    }

    public HackyViewPager (Context context, IAttributeSet attrs)
        : base (context, attrs)
    {
        IsLocked = false;
    }

    public override bool OnInterceptTouchEvent (MotionEvent ev)
    {
        if (!IsLocked) {
            try {
                return base.OnInterceptTouchEvent (ev);
            } catch (IllegalArgumentException e) {
                return false;
            }
        }
        return false;
    }

    public override bool OnTouchEvent (MotionEvent ev)
    {
        if (!IsLocked) {
            return base.OnTouchEvent (ev);
        }
        return false;
    }

    public void ToggleLock ()
    {
        IsLocked = !IsLocked;
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Xamarin Android中的BindableViewPager

来自分类Dev

Xamarin中的BackgroundWorker与Android服务

来自分类Dev

在Xamarin Android中删除ListView

来自分类Dev

Android WebView(Xamarin)中的VueJS

来自分类Dev

Xamarin表单-Android中的样式

来自分类Dev

ListView中的Android Xamarin按钮

来自分类Dev

EditText 中的 getValue - XAMARIN ANDROID

来自分类Dev

Android 中的 Xamarin 窗体框架

来自分类Dev

Xamarin.Android与Android

来自分类Dev

Xamarin.Forms或Xamarin.Android/Xamarin.IOS

来自分类Dev

在Xamarin中动态创建android Spinner

来自分类Dev

MasterDetailPage Xamarin Android中的本机视图

来自分类Dev

SoftKeyboard未在Xamarin Android中显示

来自分类Dev

在Xamarin.Android中测试活动

来自分类Dev

Xamarin.Android中的材料日历视图

来自分类Dev

Xamarin.Android中的默认构造函数

来自分类Dev

Xamarin中的Android ExpandableListView,可与MvvmCross绑定

来自分类Dev

Xamarin for Android中更改字体时出错

来自分类Dev

使用Xamarin在Android中播放视频

来自分类Dev

Android Xamarin中的WebView.EvaluateJavaScript问题

来自分类Dev

Xamarin / C#中的Android FileObserver示例?

来自分类Dev

Xamarin Android中的启动屏幕太慢

来自分类Dev

使用MVVM在Xamarin中的Android GPS定位

来自分类Dev

在Xamarin for Android(Visual Studio)中启用AOT

来自分类Dev

在Xamarin Android中更改日期格式

来自分类Dev

Xamarin中找不到Android SDK

来自分类Dev

在Xamarin android中推送通知问题

来自分类Dev

SoftKeyboard未在Xamarin android中更新

来自分类Dev

在Android Xamarin Studio中从DialogFragment启动活动