/// <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(); }
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(); } }
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; } }
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(); }
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( ); }