protected override void OnAttached()
        {
            _container = Container;

            _textView = new TextView(_context);
            _textView.SetMaxLines(1);
            _textView.SetMinLines(1);
            _textView.Ellipsize = Android.Text.TextUtils.TruncateAt.End;

            if (Element.IsFastRenderer())
            {
                _container = new FrameLayout(_context);

                _fastListener = new FastRendererOnLayoutChangeListener(Control, _container);
                Control.AddOnLayoutChangeListener(_fastListener);
            }

            _container.AddView(_textView);

            _listener = new ContainerOnLayoutChangeListener(_textView, Element);
            _container.AddOnLayoutChangeListener(_listener);

            UpdateText();
            UpdateFontSize();
            UpdateTextColor();
            UpdateBackgroundColor();
            UpdatePadding();
            UpdateLayout(_textView, Element, _container);
        }
Ejemplo n.º 2
0
        protected override void OnDetached()
        {
            if (!IsDisposed)
            {
                if (!IsClickable)
                {
                    _view.Touch -= OnOverlayTouch;
                    _view.RemoveOnLayoutChangeListener(_fastListener);
                    _rippleOverlay.RemoveFromParent();
                    _fastListener.Dispose();
                    _fastListener = null;
                    _rippleOverlay.Dispose();
                    _rippleOverlay = null;
                }
                else
                {
                    _view.Touch     -= OnViewTouch;
                    _view.Background = _orgDrawable;
                    _orgDrawable     = null;
                }
            }

            _ripple?.Dispose();
            _ripple = null;

            _audioManager = null;
            _view         = null;

            base.OnDetached();
        }
        protected override void OnDetached()
        {
            System.Diagnostics.Debug.WriteLine(Element.GetType().FullName);

            if (!IsDisposed)
            {
                _container.RemoveView(_textView);
                _container.RemoveOnLayoutChangeListener(_listener);

                if (Element.IsFastRenderer())
                {
                    Control.RemoveOnLayoutChangeListener(_fastListener);
                    _fastListener.CleanUp();
                }
            }

            _listener?.Dispose();
            _listener = null;

            _textView.Dispose();
            _textView = null;

            _fastListener?.Dispose();
            _fastListener = null;
        }
Ejemplo n.º 4
0
        protected override void OnDetachedOverride()
        {
            if (!IsDisposed)
            {
                if (!IsClickable)
                {
                    _view.Touch -= OnOverlayTouch;
                    _view.RemoveOnLayoutChangeListener(_fastListener);
                    // If a NavigationPage is used and the following code is enabled, a null exception occurs when a NavigationPageRenderer is disposed of.
                    // So this code is disabled.
                    //_rippleOverlay.RemoveFromParent();
                    _fastListener.Dispose();
                    _fastListener = null;
                    _rippleOverlay.Dispose();
                    _rippleOverlay = null;
                }
                else
                {
                    _view.Touch     -= OnViewTouch;
                    _view.Background = _orgDrawable;
                    _orgDrawable     = null;
                }
            }

            _ripple?.Dispose();
            _ripple = null;

            _audioManager = null;
            _view         = null;
        }
Ejemplo n.º 5
0
        protected override void OnDetached()
        {
            System.Diagnostics.Debug.WriteLine(Element.GetType().FullName);

            if (!IsDisposed)
            {
                _container.RemoveView(_textView);
                _container.RemoveOnLayoutChangeListener(_listener);

                if (IsFastRenderer)
                {
                    Control.RemoveOnLayoutChangeListener(_fastListener);
                    _fastListener.CleanUp();
                }
                System.Diagnostics.Debug.WriteLine($"{this.GetType().FullName} Detached Disposing");
            }

            _listener?.Dispose();
            _listener = null;

            _textView.Dispose();
            _textView = null;

            _fastListener?.Dispose();
            _fastListener = null;
            System.Diagnostics.Debug.WriteLine($"{this.GetType().FullName} Detached completely");

            base.OnDetached();
        }
        protected override void OnDetached()
        {
            System.Diagnostics.Debug.WriteLine(Element.GetType().FullName);
            if (!IsDisposed)
            {
                if (_useRipple)
                {
                    RemoveRipple();
                }
                if (_rippleOverlay != null)
                {
                    _rippleOverlay.Touch -= _view_Touch;
                    _rippleOverlay?.Dispose();
                }
                _view.Touch -= _view_Touch;
            }

            if (_command != null)
            {
                _command.CanExecuteChanged -= CommandCanExecuteChanged;
                _command = null;
            }
            if (_longCommand != null)
            {
                _longCommand.CanExecuteChanged -= CommandCanExecuteChanged;
                _longCommand = null;
            }
            _commandParameter     = null;
            _longCommandParameter = null;
            _orgDrawable          = null;
            _view = null;

            _rippleListener?.Dispose();
            _rippleListener = null;

            _rippleOverlay = null;

            _ripple?.Dispose();
            _ripple    = null;
            _useRipple = false;

            _gestureDetector?.Dispose();
            _gestureDetector = null;

            _fastListener?.Dispose();
            _fastListener = null;
        }
        void AddRipple()
        {
            if (_ripple != null)
            {
                return;
            }

            if (Element is Layout || Element is BoxView)
            {
                _rippleOverlay = new FrameLayout(_view.Context);
                _rippleOverlay.LayoutParameters = new ViewGroup.LayoutParams(-1, -1);

                _rippleListener = new ContainerOnLayoutChangeListener(_rippleOverlay);
                _view.AddOnLayoutChangeListener(_rippleListener);

                (_view as ViewGroup).AddView(_rippleOverlay);

                _rippleOverlay.BringToFront();

                _rippleOverlay.Foreground    = CreateRipple(Color.Accent.ToAndroid());
                _rippleOverlay.Clickable     = true;
                _rippleOverlay.LongClickable = true;

                _view.Touch          -= _view_Touch;
                _rippleOverlay.Touch += _view_Touch;
            }
            else if (IsFastRenderer)
            {
                if (_fastListener == null)
                {
                    _fastListener = new FastRendererOnLayoutChangeListener(this);
                    _view.AddOnLayoutChangeListener(_fastListener);
                    _view.RequestLayout();
                    return;
                }
                _view.Foreground = CreateRipple(Color.Accent.ToAndroid());
                _view.Touch     += _view_Touch;
            }
            else
            {
                _orgDrawable     = _view.Background;
                _view.Background = CreateRipple(Color.Accent.ToAndroid());
            }
        }
Ejemplo n.º 8
0
        void RemoveRipple()
        {
            if (_ripple == null)
            {
                return;
            }

            if (Element is Layout || Element is BoxView)
            {
                _view.Touch          += _view_Touch;
                _rippleOverlay.Touch -= _view_Touch;

                var viewgrp = _view as ViewGroup;

                viewgrp.RemoveOnLayoutChangeListener(_rippleListener);
                _rippleListener.Dispose();

                viewgrp.RemoveView(_rippleOverlay);
                _rippleOverlay.Dispose();

                _rippleOverlay = null;
            }
            else if (Element.IsFastRenderer())
            {
                _view.Touch -= _view_Touch;
                //Control.AddOnLayoutChangeListener(null);
                Control.RemoveOnLayoutChangeListener(_fastListener);
                _view = Control;
                _fastListener.CleanUp();
                _fastListener.Dispose();
                _fastListener = null;
                _view.Touch  += _view_Touch;
            }
            else
            {
                _view.Background = _orgDrawable;
                _orgDrawable     = null;
            }
            _ripple?.Dispose();
            _ripple = null;
        }
Ejemplo n.º 9
0
        void SetUpRipple()
        {
            _ripple = CreateRipple(Android.Graphics.Color.Transparent);

            if (!IsClickable)
            {
                _rippleOverlay = new FrameLayout(_view.Context)
                {
                    Clickable     = true,
                    LongClickable = true,
                    Foreground    = _ripple
                };
                _fastListener = new FastRendererOnLayoutChangeListener(this);
                _view.AddOnLayoutChangeListener(_fastListener);
                _view.RequestLayout();
            }
            else
            {
                _orgDrawable     = _view.Background;
                _view.Background = _ripple;
            }
        }
Ejemplo n.º 10
0
        void SetUpRipple()
        {
            ripple = CreateRipple(AColor.Transparent);

            if (!IsClickable)
            {
                rippleOverlay = new FrameLayout(view.Context)
                {
                    Clickable     = true,
                    LongClickable = true,
                    Foreground    = ripple
                };
                fastListener = new FastRendererOnLayoutChangeListener(this);
                view.AddOnLayoutChangeListener(fastListener);
                view.RequestLayout();
            }
            else
            {
                orgDrawable     = view.Background;
                view.Background = ripple;
            }
        }
Ejemplo n.º 11
0
        protected override void OnDetached()
        {
            if (!IsClickable)
            {
                view.Touch -= OnOverlayTouch;
                view.RemoveOnLayoutChangeListener(fastListener);

                fastListener.Dispose();
                fastListener = null;
                rippleOverlay.Dispose();
                rippleOverlay = null;
            }
            else
            {
                view.Touch     -= OnViewTouch;
                view.Background = orgDrawable;
                orgDrawable     = null;
            }

            ripple?.Dispose();
            ripple = null;

            view = null;
        }