BruceLee
2019-09-24 a9f88790c31c8b61d9b90241c4df258a980f1c00
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
using System;
using System.Collections.Generic;
using System.Text;
 
namespace Shared.Phone.UserCenter
{
    /// <summary>
    /// 做成一个里面只装FrameLayout的列表型控件(它不会调整高度)
    /// </summary>
    public class VerticalFrameControl : VerticalScrolViewLayout
    {
        #region ■ 变量声明___________________________
 
        /// <summary>
        /// 行之间的间距
        /// </summary>
        public int rowSpace = 0;
        /// <summary>
        /// 桌布控件
        /// </summary>
        private FrameLayout frameTable = null;
 
        #endregion
 
        #region ■ 初始化_____________________________
 
        /// <summary>
        /// 做成一个列表型的FrameLayout(它不会调整高度)
        /// </summary>
        /// <param name="i_rowSpace">行之间的间距(这个值是与行控件绑定一起使用的)</param>
        public VerticalFrameControl(int i_rowSpace = 0)
        {
            rowSpace = Application.GetRealHeight(i_rowSpace);
        }
 
        /// <summary>
        /// 初始化桌布控件
        /// </summary>
        private void InitFrameTable()
        {
            if (this.frameTable != null)
            {
                return;
            }
            this.frameTable = new FrameLayout();
            this.frameTable.Width = this.Width;
            this.frameTable.Height = this.Height;
            this.AddChidren(this.frameTable);
        }
 
        #endregion
 
        #region ■ 添加子控件_________________________
 
        /// <summary>
        /// 添加Frame子控件
        /// </summary>
        /// <param name="view"></param>
        public void AddChidrenFrame(FrameLayout frame)
        {
            //初始化桌布控件
            this.InitFrameTable();
 
            var child = this.frameTable.GetChildren(this.frameTable.ChildrenCount - 1);
            if (child != null)
            {
                frame.Y = child.Bottom + rowSpace;
            }
            this.frameTable.AddChidren(frame);
            //调整桌布高度
            if (this.frameTable.Height < frame.Bottom)
            {
                this.frameTable.Height = frame.Bottom;
            }
        }
 
        #endregion
 
        #region ■ 一般方法___________________________
 
        /// <summary>
        /// 调整桌布高度
        /// </summary>
        public void AdjustTableHeight()
        {
            var child = this.frameTable?.GetChildren(this.frameTable.ChildrenCount - 1);
            if (child != null)
            {
                //调整桌布高度
                if (this.frameTable.Height < child.Bottom)
                {
                    this.frameTable.Height = child.Bottom;
                }
            }
        }
 
        #endregion
    }
}