/// <summary>Helps to force width value before calling requestLayout by the system.</summary>
        public static void SetWidth(Android.Views.View view, int width)
        {
            // Change width value from params
            ((RecyclerView.LayoutParams)view.LayoutParameters).Width = width;
            int widthMeasureSpec  = View.MeasureSpec.MakeMeasureSpec(width, MeasureSpecMode.Exactly);
            int heightMeasureSpec = View.MeasureSpec.MakeMeasureSpec(view.MeasuredHeight, MeasureSpecMode.Exactly);

            view.Measure(widthMeasureSpec, heightMeasureSpec);
            view.RequestLayout();
        }
Beispiel #2
0
        internal static void MaybeRequestLayout(this AView view)
        {
            var isInLayout = false;

            if ((int)Build.VERSION.SdkInt >= 18)
            {
                isInLayout = view.IsInLayout;
            }

            if (!isInLayout && !view.IsLayoutRequested)
            {
                view.RequestLayout();
            }
        }
Beispiel #3
0
        private void possiblyResizeChildOfContent()
        {
            int usableHeightNow = computeUsableHeight();

            if (usableHeightNow != usableHeightPrevious)
            {
                int usableHeightSansKeyboard = mChildOfContent.RootView.Height;
                int heightDifference         = usableHeightSansKeyboard - usableHeightNow;

                frameLayoutParams.Height = usableHeightSansKeyboard - heightDifference;

                mChildOfContent.RequestLayout();
                usableHeightPrevious = usableHeightNow;
            }
        }
Beispiel #4
0
        void UpdateIsVisible()
        {
            VisualElement view  = _renderer.Element;
            AView         aview = _renderer.View;

            if (view.IsVisible && aview.Visibility != ViewStates.Visible)
            {
                aview.Visibility = ViewStates.Visible;
            }
            if (!view.IsVisible && aview.Visibility != ViewStates.Gone)
            {
                aview.Visibility = ViewStates.Gone;
            }

            aview.Invalidate();
            aview.RequestLayout();
        }
Beispiel #5
0
        void AnimateImageView( View imageView, PointF startPos, PointF endPos, System.Drawing.SizeF startSize, System.Drawing.SizeF endSize, float duration, SimpleAnimator.AnimationComplete completeDelegate )
        {
            // calculate the deltas once before we start
            float xDelta = endPos.X - startPos.X;
            float yDelta = endPos.Y - startPos.Y;

            float deltaWidth = endSize.Width - startSize.Width;
            float deltaHeight = endSize.Height - startSize.Height;

            // create an animator
            SimpleAnimator_Float imageAnimator = new SimpleAnimator_Float( 0.00f, 1.00f, duration,
                delegate( float percent, object value )
                {
                    Rock.Mobile.Threading.Util.PerformOnUIThread( delegate
                        {
                            // each update, interpolate the deltas and apply
                            imageView.SetX( startPos.X + ( xDelta * percent ) );
                            imageView.SetY( startPos.Y + ( yDelta * percent ) );

                            imageView.LayoutParameters.Width = (int)( startSize.Width + ( deltaWidth * percent ) );
                            imageView.LayoutParameters.Height = (int)( startSize.Height + ( deltaHeight * percent ) );

                            // force the image to re-evaluate its size
                            imageView.RequestLayout( );
                        } );
                },
                //ANIMATION COMPLETE
                delegate
                {
                    if ( completeDelegate != null )
                    {
                        Rock.Mobile.Threading.Util.PerformOnUIThread( delegate
                            {
                                completeDelegate( );
                            } );
                    }
                } );

            imageAnimator.Start( );
        }