| | |
| | | namespace Shared.Phone.UserCenter
|
| | | {
|
| | | /// <summary>
|
| | | /// 做成一个列表型的FrameLayout(它与VerticalListControl同一性质,它会改变高度)
|
| | | /// 做成一个列表型的FrameLayout(它与VerticalListControl同一性质,但是它是FrameLayout,它会改变高度)
|
| | | /// </summary>
|
| | | public class FrameListControl : FrameLayout
|
| | | public class FrameListControl : FrameLayoutBase
|
| | | {
|
| | | /// <summary>
|
| | | /// 行之间的间距
|
| | |
| | | public int rowSpace = 0;
|
| | |
|
| | | /// <summary>
|
| | | /// 做成一个列表型的FrameLayout(它与VerticalListControl同一性质,它会改变高度)
|
| | | /// 做成一个列表型的FrameLayout(它与VerticalListControl同一性质,但是它是FrameLayout,它会改变高度)
|
| | | /// </summary>
|
| | | /// <param name="i_rowSpace">行之间的间距(这个值是与行控件绑定一起使用的)</param>
|
| | | public FrameListControl(int i_rowSpace = 12)
|
| | |
| | | if (view is FrameRowControl || view is RowLayoutControl)
|
| | | {
|
| | | //FrameRowLayout控件的时候,直接扩大它的高度
|
| | | var tempView = this.GetChildren(this.ChildrenCount - 1);
|
| | | if (tempView != null)
|
| | | var intBottom = this.GetLocationMostLastViewBottom();
|
| | | if (intBottom != -1)
|
| | | {
|
| | | view.Y = tempView.Bottom;
|
| | | view.Y = intBottom;
|
| | | }
|
| | | base.AddChidren(view);
|
| | | if (rowSpace > 0)
|
| | |
| | | else
|
| | | {
|
| | | //非FrameRowLayout控件的时候,计算的是坐标
|
| | | var tempView = this.GetChildren(this.ChildrenCount - 1);
|
| | | if (tempView != null)
|
| | | var intBottom = this.GetLocationMostLastViewBottom();
|
| | | if (intBottom != -1)
|
| | | {
|
| | | view.Y = tempView.Bottom + rowSpace;
|
| | | view.Y = intBottom + rowSpace;
|
| | | }
|
| | | base.AddChidren(view);
|
| | | }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 调整真实高度
|
| | | /// </summary>
|
| | | /// <param name="bottomSpace">底部高度(非真实值)</param>
|
| | | public void AdjustRealHeight(int bottomSpace = 0)
|
| | | {
|
| | | int bottomHeight = -1;
|
| | |
|
| | | for (int i = 0; i < this.ChildrenCount; i++)
|
| | | {
|
| | | var child = this.GetChildren(i);
|
| | | if (child.Bottom > bottomHeight)
|
| | | {
|
| | | bottomHeight = child.Bottom;
|
| | | }
|
| | | }
|
| | | if (bottomHeight != -1)
|
| | | {
|
| | | this.Height = bottomHeight + bottomSpace;
|
| | | }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 获取坐标底部最下面的那个控件的底部坐标
|
| | | /// </summary>
|
| | | /// <returns></returns>
|
| | | private int GetLocationMostLastViewBottom()
|
| | | {
|
| | | int bottomHeight = -1;
|
| | |
|
| | | for (int i = 0; i < this.ChildrenCount; i++)
|
| | | {
|
| | | var child = this.GetChildren(i);
|
| | | if (child.Bottom > bottomHeight)
|
| | | {
|
| | | bottomHeight = child.Bottom;
|
| | | }
|
| | | }
|
| | | return bottomHeight;
|
| | | }
|
| | | }
|
| | | }
|