gxc
2019-11-07 a4924de3136289d10cabbf2f61a228387d44ded7
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ListViewLayoutControls/VerticalListControl.cs
@@ -15,6 +15,29 @@
        /// 行之间的间距
        /// </summary>
        public int rowSpace = 0;
        /// <summary>
        /// 最大高度
        /// </summary>
        private int maxHeight = -1;
        /// <summary>
        /// 一个没什么用的东西
        /// </summary>
        private FrameLayout frameBackTemp = null;
        /// <summary>
        /// 自定义的获取子控件个数
        /// </summary>
        public new int ChildrenCount
        {
            get
            {
                int count = base.ChildrenCount;
                if (frameBackTemp != null)
                {
                    count--;
                }
                return count < 0 ? 0 : count;
            }
        }
        #endregion
@@ -47,7 +70,65 @@
                    view.Height += rowSpace;
                }
            }
            if (maxHeight == -1)
            {
                maxHeight = this.Height;
            }
        }
        #endregion
        #region ■ 调整真实高度_______________________
        /// <summary>
        /// 还原高度
        /// </summary>
        public void RecoverHeight()
        {
            if (this.maxHeight != -1)
            {
                this.Height = this.maxHeight;
            }
        }
        /// <summary>
        /// 调整控件真实高度(只针对行控件都是相同高度的,高度只会减少,不会增加)
        /// </summary>
        /// <param name="bottomSpace">底部空白间距(真实值)</param>
        /// <param name="addSpace">当真实高度超过原有高度时,是否添加空白</param>
        public void AdjustRealHeight(int bottomSpace, bool addSpace = true)
        {
            int count = frameBackTemp == null ? this.ChildrenCount : this.ChildrenCount - 1;
            if (count <= 0)
            {
                frameBackTemp?.RemoveFromParent();
                frameBackTemp = null;
                if (maxHeight != -1)
                {
                    //还原为最大高度
                    this.Height = maxHeight;
                }
                return;
            }
            //调整列表控件的高度
            var realHeight = count * this.GetChildren(0).Height + bottomSpace;
            if (realHeight < this.Height)
            {
                frameBackTemp?.RemoveFromParent();
                frameBackTemp = null;
                //缩小控件高度
                this.Height = realHeight;
            }
            else if (addSpace == true && bottomSpace > 0 && realHeight > this.maxHeight)
            {
                frameBackTemp?.RemoveFromParent();
                frameBackTemp = new FrameLayout();
                frameBackTemp.Height = bottomSpace;
                this.AddChidren(frameBackTemp);
            }
        }
        #endregion
    }
}