【问题标题】:Xamarin: Does the carousel page load all the pages at oneXamarin:轮播页面是否一次加载所有页面
【发布时间】:2016-07-06 22:36:01
【问题描述】:

我是 Xamarin 形式的新手。在 Android 上,我使用 ViewPager 加载图像,然后用户在页面上滑动。由于 Android 有适配器,所有视图都不会一次初始化。现在我想转到 Xamarin 表单并看到轮播页面。它的行为是否与 ViewPager 仅根据需要加载页面相同?

【问题讨论】:

    标签: xamarin xamarin.forms carousel


    【解决方案1】:

    Xamarin.FormsCarouselPage 不支持 UI 虚拟化(回收)。

    初始化性能和内存使用可能会成为问题,具体取决于页面/子项的数量。

    首选的VisualElementCarouselView,它基本上取代了CarouselPage,并且已针对每个平台进行了优化。

    博客:Xamarin.Forms CarouselView

    Nuget:Xamarin.Forms.CarouselView(目前处于预发布阶段)

    仅供参考:我刚刚查看了 Android 渲染器 (CarouselViewRenderer.cs) 的源代码,它确实实现了 RecyclerView...

    【讨论】:

      【解决方案2】:

      如果您在页面的构造函数中阻止对 InitializeComponent 的调用,您可能会对加载时间产生影响。

      public interface CarouselChildPage {
          void childAppearing();
          void childDissapearing();
      }
      
      public partial class MainPage : CarouselPage {
          CarouselPageChild previousPage;
      
          protected override void OnCurrentPageChanged() {
                  base.OnCurrentPageChanged();
                  if (previousPage != null)
                      previousPage.childDissapearing();
      
                  int index = Children.IndexOf(CurrentPage);
                  CarouselPageChild childPage = Children[index] as CarouselPageChild;
                  childPage.childAppearing();
                  previousPage = childPage;
              }
      }
      
      
      public partial class FriendsListPage : ContentPage, CarouselPageChild {
              bool isLoaded = false;
      
              public FriendsListPage() {
                      // Remove Initialise Component Here    
              }
      
              public void childAppearing() {
                  Logger.log("My Appearing");
                  if (!isLoaded){ 
                      InitializeComponent();
                      isLoaded = true;
                  }
              }
      
              public void childDissapearing() {
                  Logger.log("My Disappearing");
              }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-11
        • 2016-04-02
        • 2017-11-23
        • 1970-01-01
        • 2020-01-23
        • 1970-01-01
        • 2011-02-14
        相关资源
        最近更新 更多