void InitializeComponent()
        {
            _mainBox = new Box(Forms.NativeParent)
            {
                AlignmentX = -1,
                AlignmentY = -1,
                WeightX    = 1,
                WeightY    = 1,
            };
            _mainBox.Show();
            _mainBox.SetLayoutCallback(OnLayout);

            _indexIndicator = new Index(_mainBox)
            {
                IsHorizontal = true,
                AutoHide     = false,
            }.SetStyledIndex();
            _indexIndicator.Show();

            _scroller               = new Scroller(_mainBox);
            _scroller.Scrolled     += OnScrolled;
            _scroller.PageScrolled += OnScrollStop;

            //PageScrolled event is not invoked when a user scrolls beyond the end using bezel
            var scrollAnimationStop = new SmartEvent(_scroller, ThemeConstants.Scroller.Signals.StopScrollAnimation);

            scrollAnimationStop.On += OnScrollStop;

            _scroller.Focused   += OnFocused;
            _scroller.Unfocused += OnUnfocused;

            // Disables the visibility of the scrollbar in both directions:
            _scroller.HorizontalScrollBarVisiblePolicy = ScrollBarVisiblePolicy.Invisible;
            _scroller.VerticalScrollBarVisiblePolicy   = ScrollBarVisiblePolicy.Invisible;

            // Sets the limit of scroll to one page maximum:
            _scroller.HorizontalPageScrollLimit = 1;
            _scroller.SetPageSize(1.0, 1.0);
            _scroller.SetAlignment(-1, -1);
            _scroller.SetWeight(1.0, 1.0);
            _scroller.Show();

            _innerContainer = new Box(_mainBox);
            _innerContainer.SetLayoutCallback(OnInnerLayoutUpdate);
            _innerContainer.SetAlignment(-1, -1);
            _innerContainer.SetWeight(1.0, 1.0);
            _innerContainer.Show();
            _scroller.SetContent(_innerContainer);

            _mainBox.PackEnd(_indexIndicator);
            _mainBox.PackEnd(_scroller);
            _indexIndicator.StackAbove(_scroller);
        }
        /// <summary>
        /// Initializes a new instance of the CarouselPage class.
        /// </summary>
        public CarouselPage(EvasObject parent) : base(parent)
        {
            AlignmentX = -1;
            AlignmentY = -1;
            WeightX    = 1;
            WeightY    = 1;
            Show();

            _scroller = new Scroller(parent)
            {
                HorizontalScrollBarVisiblePolicy = ScrollBarVisiblePolicy.Invisible,
                VerticalScrollBarVisiblePolicy   = ScrollBarVisiblePolicy.Invisible,
                HorizontalPageScrollLimit        = 1,
                HorizontalRelativePageSize       = 1.0,
                AlignmentX = -1,
                AlignmentY = -1,
                WeightX    = 1,
                WeightY    = 1,
            };
            _scroller.PageScrolled += OnPageScrolled;
            _scroller.Show();

            _innerContainer = new EBox(parent)
            {
                AlignmentX = -1,
                AlignmentY = -1,
                WeightX    = 1,
                WeightY    = 1,
            };
            _innerContainer.SetLayoutCallback(OnInnerLayoutUpdate);
            _innerContainer.Show();
            _scroller.SetContent(_innerContainer);

            _index = new Index(parent)
            {
                IsHorizontal = true,
                AutoHide     = false,
                AlignmentX   = -1,
                AlignmentY   = -1,
                WeightX      = 1,
                WeightY      = 1,
            };
            _index.Changed += OnIndexChanged;
            _index.Show();

            SetLayoutCallback(OnOutterLayoutUpdate);
            PackEnd(_scroller);
            PackEnd(_index);
        }
Beispiel #3
0
 protected override void Dispose(bool disposing)
 {
     if (disposing)
     {
         if (Element != null)
         {
             Element.CurrentPageChanged -= OnCurrentPageChanged;
             Element.PagesChanged       -= OnPagesChanged;
             _scroller.PageScrolled     -= OnPageScrolled;
             _index.Changed             -= OnIndexChanged;
         }
         _innerContainer = null;
         _scroller       = null;
         _index          = null;
     }
     base.Dispose(disposing);
 }
Beispiel #4
0
        protected override void OnElementChanged(ElementChangedEventArgs <CarouselPage> e)
        {
            if (NativeView == null)
            {
                _outterLayout = new Box(Forms.NativeParent)
                {
                    AlignmentX = -1,
                    AlignmentY = -1,
                    WeightX    = 1,
                    WeightY    = 1,
                };
                _outterLayout.Show();

                _scroller = new Scroller(Forms.NativeParent)
                {
                    HorizontalScrollBarVisiblePolicy = ScrollBarVisiblePolicy.Invisible,
                    VerticalScrollBarVisiblePolicy   = ScrollBarVisiblePolicy.Invisible,
                    HorizontalPageScrollLimit        = 1,
                    HorizontalRelativePageSize       = 1.0,
                    AlignmentX = -1,
                    AlignmentY = -1,
                    WeightX    = 1,
                    WeightY    = 1,
                };
                _scroller.PageScrolled += OnPageScrolled;
                _scroller.Show();

                _innerContainer = new Box(Forms.NativeParent)
                {
                    AlignmentX = -1,
                    AlignmentY = -1,
                    WeightX    = 1,
                    WeightY    = 1,
                };
                _innerContainer.SetLayoutCallback(OnInnerLayoutUpdate);
                _innerContainer.Show();
                _scroller.SetContent(_innerContainer);

                _index = new Index(Forms.NativeParent)
                {
                    IsHorizontal = true,
                    AutoHide     = false,
                    AlignmentX   = -1,
                    AlignmentY   = -1,
                    WeightX      = 1,
                    WeightY      = 1,
                };
                _index.Changed += OnIndexChanged;
                _index.Show();

                _outterLayout.SetLayoutCallback(OnOutterLayoutUpdate);
                _outterLayout.PackEnd(_scroller);
                _outterLayout.PackEnd(_index);

                SetNativeView(_outterLayout);
            }

            if (e.OldElement != null)
            {
                e.OldElement.CurrentPageChanged -= OnCurrentPageChanged;
                e.OldElement.PagesChanged       -= OnPagesChanged;
                _isInitalized = false;
            }

            if (e.NewElement != null)
            {
                Element.CurrentPageChanged += OnCurrentPageChanged;
                Element.PagesChanged       += OnPagesChanged;
            }

            base.OnElementChanged(e);
        }
Beispiel #5
0
 public static Index SetStyledIndex(this Index index)
 {
     index.Style = DeviceInfo.Idiom == DeviceIdiom.Watch ? ThemeConstants.Index.Styles.Circle : ThemeConstants.Index.Styles.PageControl;
     return(index);
 }