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; }
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; }