コード例 #1
0
        public SizeRequest Measure(double widthConstraint, double heightConstraint, MeasureFlags flags = MeasureFlags.None)
        {
            bool      includeMargins = (flags & MeasureFlags.IncludeMargins) != 0;
            Thickness margin         = default(Thickness);

            if (includeMargins)
            {
                var view = this as View;
                if (view != null)
                {
                    margin = view.Margin;
                }
                widthConstraint  = Math.Max(0, widthConstraint - margin.HorizontalThickness);
                heightConstraint = Math.Max(0, heightConstraint - margin.VerticalThickness);
            }
#pragma warning disable 0618 // retain until GetSizeRequest removed
            SizeRequest result = GetSizeRequest(widthConstraint, heightConstraint);
#pragma warning restore 0618

            if (includeMargins)
            {
                if (!margin.IsDefault)
                {
                    result.Minimum = new Size(result.Minimum.Width + margin.HorizontalThickness, result.Minimum.Height + margin.VerticalThickness);
                    result.Request = new Size(result.Request.Width + margin.HorizontalThickness, result.Request.Height + margin.VerticalThickness);
                }
            }

            return(result);
        }
コード例 #2
0
ファイル: VisualElement.cs プロジェクト: Costo/Xamarin.Forms
		public SizeRequest Measure(double widthConstraint, double heightConstraint, MeasureFlags flags = MeasureFlags.None)
		{
			bool includeMargins = (flags & MeasureFlags.IncludeMargins) != 0;
			Thickness margin = default(Thickness);
			if (includeMargins)
			{
				var view = this as View;
				if (view != null)
					margin = view.Margin;
				widthConstraint = Math.Max(0, widthConstraint - margin.HorizontalThickness);
				heightConstraint = Math.Max(0, heightConstraint - margin.VerticalThickness);
			}
#pragma warning disable 0618 // retain until GetSizeRequest removed
			SizeRequest result = GetSizeRequest(widthConstraint, heightConstraint);
#pragma warning restore 0618

			if (includeMargins)
			{
				
				

				if (!margin.IsDefault)
				{
					result.Minimum = new Size(result.Minimum.Width + margin.HorizontalThickness, result.Minimum.Height + margin.VerticalThickness);
					result.Request = new Size(result.Request.Width + margin.HorizontalThickness, result.Request.Height + margin.VerticalThickness);
				}
			}

			return result;
		}
コード例 #3
0
        public static SizeRequest MeasureLabel(Label label, string text, double widthConstraint = double.PositiveInfinity, double heightConstraint = double.PositiveInfinity, MeasureFlags flags = MeasureFlags.IncludeMargins)
        {
            var key = new CachLabelMeasureKey
            {
                font             = label.Font,
                fontSize         = label.FontSize,
                fontFamily       = label.FontFamily,
                lineBreakMode    = label.LineBreakMode,
                text             = text,
                margin           = label.Margin,
                widthConstraint  = widthConstraint,
                heightConstraint = heightConstraint,
                flags            = flags,
            };
            SizeRequest size;

            if (!CachLabelMeasure.TryGetValue(key, out size))
            {
                var extext = label.Text;
                label.Text = text;
                size       = Measure(label, widthConstraint, heightConstraint, flags);
                label.Text = extext;

                CachLabelMeasure.Add(key, size);
            }

            return(size);
        }
コード例 #4
0
        public static SizeRequest Measure(VisualElement view, double widthConstraint, double heightConstraint, MeasureFlags flags = MeasureFlags.IncludeMargins)
        {
            var req = view.Measure(double.PositiveInfinity, double.PositiveInfinity, MeasureFlags.IncludeMargins);

            return(req);
        }