我需要使用 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/