java - Xamarin Android 垂直 ViewPager

标签 java c# android xamarin android-viewpager

我需要使用 Xamarin 在 Android 中使用垂直 ViewPager,但该解决方案不起作用。我在 java 中搜索了一些示例,但 git 社区开发了一个对象来完成所有工作。不幸的是 Xamarin 中没有。所以,这是我的代码,它不会给我错误,但它只显示黑屏。仅此而已。

我扩展了 ViewPager 类

public class VerticalViewPager : ViewPager {

    public VerticalViewPager (Context context):base(context) {

        Init ();
    }

    public VerticalViewPager(Context context, IAttributeSet attr):base(context, attr) {

        Init();
    }

    public override bool OnTouchEvent (Android.Views.MotionEvent e) {

        e.SetLocation (e.GetY (), e.GetX ());
        return base.OnTouchEvent (e);
    }

    private void Init()  {

        SetPageTransformer (true, new PagerTransformer());
        OverScrollMode = Android.Views.OverScrollMode.Never;
    }
}

并创建我的 PageTransformer

public class PagerTransformer : Java.Lang.Object, ViewPager.IPageTransformer {

    int pageWidth;
    int pageHeight;
    float yPos;

    public PagerTransformer () {}

    public void TransformPage (View view, float position) {

        pageWidth = view.Width;
        pageHeight = view.Height;

        if (position < -1)  {

            view.Alpha = 0;
        } 
        else if (position <= 1)  {

            view.Alpha = 1;
            // Counteract the default slide transition
            view.TranslationX = (pageWidth * -position);
            //set Y position to swipe in from top
            yPos = position + pageHeight;
            view.TranslationY = yPos;
        } 
        else  {

            // This page is way off-screen to the right.
            view.Alpha = 0;
        }
    }
}

在MainActivity中,我设置的onCreate方法

page = FindViewById<VerticalViewPager> (Resource.Id.vertical_pager);

显然 page 是一个 VerticalViewPager 对象。

如果我使用普通的 ViewPager,该应用程序可以正常工作。关于黑屏的原因有什么想法吗? 任何 Java 代码也值得赞赏!

谢谢

最佳答案

黑屏的原因是您将屏幕位置设置在可见范围之外。您的可见边界是从 0 到页面高度。 试试他的:“yPos = 位置 * pageHeight;”而不是“yPos = 位置 + pageHeight;”

关于java - Xamarin Android 垂直 ViewPager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27112820/

相关文章:

java - 编号和循环问题

java - id 的正确 Java 命名约定是什么?

c# - 在锁定文件中找不到所需的信息。确保你的目标中提到了 .NETCore,Version=v5.0/win10-anycpu

c# - 从浏览器运行 WCF 方法

Android AppWidget 不更新

android - invalid key hash key 哈希与任何存储的 key 哈希不匹配

java - TreeMap 的工作,Java 中插入和读取操作的时间复杂度

c# - 如何反序列化 XML 文档

java - Android:项目列表单击 JSON 生成的 ListView - 无法单击

java - CentOS 上的 Apache Ant 1.8