2014-11-24 65 views
1

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

我扩展了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); 

,显然页面是VerticalViewPager对象。

如果我使用normale ViewPager,应用程序工作正常。关于黑屏原因的任何想法? 任何Java代码也是赏心悦目!

感谢

回答

0

黑屏的原因是你设置你的屏幕上的位置进行可视范围的。您的可见边界从0到页面高度。 试试看:“yPos = position * pageHeight;”而不是“yPos = position + pageHeight;”