コード例 #1
0
        protected override void performLayout()
        {
            BoxConstraints constraints = this.constraints;
            float          maxHeight   = CupertinoSegmentedControlsUtils._kMinSegmentedControlHeight;

            float childWidth = constraints.minWidth / childCount;

            foreach (RenderBox child in getChildrenAsList())
            {
                childWidth = Mathf.Max(childWidth, child.getMaxIntrinsicWidth(float.PositiveInfinity));
            }
            childWidth = Mathf.Min(childWidth, constraints.maxWidth / childCount);

            RenderBox child1 = firstChild;

            while (child1 != null)
            {
                float boxHeight = child1.getMaxIntrinsicHeight(childWidth);
                maxHeight = Mathf.Max(maxHeight, boxHeight);
                child1    = childAfter(child1);
            }

            constraints.constrainHeight(maxHeight);

            BoxConstraints childConstraints = BoxConstraints.tightFor(
                width: childWidth,
                height: maxHeight
                );

            child1 = firstChild;
            while (child1 != null)
            {
                child1.layout(childConstraints, parentUsesSize: true);
                child1 = childAfter(child1);
            }

            switch (textDirection)
            {
            case TextDirection.rtl:
                _layoutRects(
                    childBefore,
                    lastChild,
                    firstChild
                    );
                break;

            case TextDirection.ltr:
                _layoutRects(
                    childAfter,
                    firstChild,
                    lastChild
                    );
                break;
            }

            size = constraints.constrain(new Size(childWidth * childCount, maxHeight));
        }
コード例 #2
0
        protected override void performLayout()
        {
            BoxConstraints constraints = this.constraints;
            float          childWidth  = (constraints.minWidth - totalSeparatorWidth) / childCount;
            float          maxHeight   = CupertinoSlidingSegmentedControlsUtils._kMinSegmentedControlHeight;

            foreach (RenderBox child1 in getChildrenAsList())
            {
                childWidth = Mathf.Max(childWidth, child1.getMaxIntrinsicWidth(float.PositiveInfinity) + 2 * CupertinoSlidingSegmentedControlsUtils._kSegmentMinPadding);
            }

            childWidth = Mathf.Min(
                childWidth,
                (constraints.maxWidth - totalSeparatorWidth) / childCount
                );

            RenderBox child = firstChild;

            while (child != null)
            {
                float boxHeight = child.getMaxIntrinsicHeight(childWidth);
                maxHeight = Mathf.Max(maxHeight, boxHeight);
                child     = childAfter(child);
            }

            constraints.constrainHeight(maxHeight);

            BoxConstraints childConstraints = BoxConstraints.tightFor(
                width: childWidth,
                height: maxHeight
                );

            // Layout children.
            child = firstChild;
            while (child != null)
            {
                child.layout(childConstraints, parentUsesSize: true);
                child = childAfter(child);
            }

            float start = 0;

            child = firstChild;

            while (child != null)
            {
                _SlidingSegmentedControlContainerBoxParentData childParentData =
                    child.parentData as _SlidingSegmentedControlContainerBoxParentData;
                Offset childOffset = new Offset(start, 0);
                childParentData.offset = childOffset;
                start += child.size.width + CupertinoSlidingSegmentedControlsUtils._kSeparatorWidth + CupertinoSlidingSegmentedControlsUtils._kSeparatorInset.horizontal;
                child  = childAfter(child);
            }

            size = constraints.constrain(new Size(childWidth * childCount + totalSeparatorWidth, maxHeight));
        }
コード例 #3
0
        protected internal override float computeMaxIntrinsicHeight(float width)
        {
            RenderBox child     = firstChild;
            float     maxHeight = 0.0f;

            while (child != null)
            {
                _SegmentedControlContainerBoxParentData childParentData = child.parentData as _SegmentedControlContainerBoxParentData;
                float childHeight = child.getMaxIntrinsicHeight(width);
                maxHeight = Mathf.Max(maxHeight, childHeight);
                child     = childParentData.nextSibling;
            }
            return(maxHeight);
        }
コード例 #4
0
ファイル: table.cs プロジェクト: silingfei/UIWidgets
        protected override float computeMinIntrinsicHeight(float width)
        {
            D.assert(this._children.Count == this.rows * this.columns);
            List <float> widths = this._computeColumnWidths(BoxConstraints.tightForFinite(width: width));
            float        rowTop = 0.0f;

            for (int y = 0; y < this.rows; y++)
            {
                float rowHeight = 0.0f;
                for (int x = 0; x < this.columns; x++)
                {
                    int       xy    = x + y * this.columns;
                    RenderBox child = this._children[xy];
                    if (child != null)
                    {
                        rowHeight = Mathf.Max(rowHeight, child.getMaxIntrinsicHeight(widths[x]));
                    }
                }

                rowTop += rowHeight;
            }

            return(rowTop);
        }
コード例 #5
0
 static float _maxHeight(RenderBox box, float width)
 {
     return(box == null ? 0.0f : box.getMaxIntrinsicHeight(width));
 }