Ejemplo n.º 1
0
        internal override void ComputeConstraintForView(View view)
        {
            LayoutOptions vOptions = view.VerticalOptions;
            LayoutOptions hOptions = view.HorizontalOptions;

            var result = LayoutConstraint.None;

            if (vOptions.Alignment == LayoutAlignment.Fill)
            {
                result |= LayoutConstraint.VerticallyFixed;
            }
            if (hOptions.Alignment == LayoutAlignment.Fill)
            {
                result |= LayoutConstraint.HorizontallyFixed;
            }

            view.ComputedConstraint = result;
        }
Ejemplo n.º 2
0
        internal override void ComputeConstraintForView(View view)
        {
            LayoutOptions vOptions = view.VerticalOptions;
            LayoutOptions hOptions = view.HorizontalOptions;

            var result = LayoutConstraint.None;

            // grab a snapshot of this grid's structure for computing the constraints
            var structure = new GridStructure(this);

            if (vOptions.Alignment == LayoutAlignment.Fill)
            {
                int row     = GetRow(view);
                int rowSpan = GetRowSpan(view);
                List <RowDefinition> rowDefinitions = structure.Rows;

                var canFix = true;

                for (int i = row; i < row + rowSpan && i < rowDefinitions.Count; i++)
                {
                    GridLength height = rowDefinitions[i].Height;
                    if (height.IsAuto)
                    {
                        canFix = false;
                        break;
                    }
                    if ((Constraint & LayoutConstraint.VerticallyFixed) == 0 && height.IsStar)
                    {
                        canFix = false;
                        break;
                    }
                }

                if (canFix)
                {
                    result |= LayoutConstraint.VerticallyFixed;
                }
            }

            if (hOptions.Alignment == LayoutAlignment.Fill)
            {
                int col     = GetColumn(view);
                int colSpan = GetColumnSpan(view);
                List <ColumnDefinition> columnDefinitions = structure.Columns;

                var canFix = true;

                for (int i = col; i < col + colSpan && i < columnDefinitions.Count; i++)
                {
                    GridLength width = columnDefinitions[i].Width;
                    if (width.IsAuto)
                    {
                        canFix = false;
                        break;
                    }
                    if ((Constraint & LayoutConstraint.HorizontallyFixed) == 0 && width.IsStar)
                    {
                        canFix = false;
                        break;
                    }
                }

                if (canFix)
                {
                    result |= LayoutConstraint.HorizontallyFixed;
                }
            }

            view.ComputedConstraint = result;
        }