黄学彪
2020-12-16 0d9f64668fd7350d6a21fd157e32009a96d98134
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
using System;
using System.Collections.Generic;
using System.Text;
 
namespace Shared.Phone
{
    /// <summary>
    /// 底部弹窗的菜单选择控件
    /// </summary>
    public class BottomMenuSelectForm : DialogCommonForm
    {
        #region ■ 变量声明___________________________
 
        /// <summary>
        /// 菜单高度
        /// </summary>
        private int menuHeight = Application.GetRealHeight(156);
        /// <summary>
        /// 菜单总数
        /// </summary>
        private int m_MenuCount = 0;
        /// <summary>
        /// 菜单桌布控件
        /// </summary>
        private FrameLayout frameMenuTable = null;
        /// <summary>
        /// 容器
        /// </summary>
        private FrameLayout frameAnimateTable = null;
 
        #endregion
 
        #region ■ 初始化_____________________________
 
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="menuCount">菜单总数(不含取消菜单)</param>
        public void ShowForm(int menuCount)
        {
            this.m_MenuCount = menuCount;
            //初始化中部信息
            this.InitMiddleFrame(menuCount);
        }
 
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        /// <param name="menuCount">菜单总数(不含取消菜单)</param>
        private void InitMiddleFrame(int menuCount)
        {
            //容器
            int framebackHeight = this.menuHeight * (menuCount + 1) + Application.GetRealHeight(23) * 2;
            this.frameAnimateTable = new FrameLayout();
            frameAnimateTable.Height = framebackHeight;
            frameAnimateTable.Y = bodyFrameLayout.Height - framebackHeight;
            bodyFrameLayout.AddChidren(frameAnimateTable);
 
            //菜单的桌布控件
            this.frameMenuTable = new FrameLayout();
            frameMenuTable.Gravity = Gravity.CenterHorizontal;
            frameMenuTable.Radius = (uint)Application.GetRealHeight(35);
            frameMenuTable.Width = Application.GetRealWidth(1034);
            frameMenuTable.Height = this.menuHeight * menuCount;
            frameMenuTable.BackgroundColor = UserCenterColor.Current.White;
            frameAnimateTable.AddChidren(frameMenuTable);
 
            //取消
            var frameCancel = new FrameLayout();
            frameCancel.Y = frameAnimateTable.Height - this.menuHeight - Application.GetRealHeight(23);
            frameCancel.Gravity = Gravity.CenterHorizontal;
            frameCancel.Radius = (uint)Application.GetRealHeight(35);
            frameCancel.Width = Application.GetRealWidth(1034);
            frameCancel.Height = this.menuHeight;
            frameCancel.BackgroundColor = UserCenterColor.Current.White;
            frameAnimateTable.AddChidren(frameCancel);
            var btnCancel = new NormalViewControl(Application.GetRealWidth(900), this.menuHeight, false);
            btnCancel.Y = frameAnimateTable.Height - this.menuHeight - Application.GetRealHeight(23);
            btnCancel.Gravity = Gravity.CenterHorizontal;
            btnCancel.TextAlignment = TextAlignment.Center;
            btnCancel.TextColor = 0xff0075ff;
            btnCancel.TextSize = 17;
            btnCancel.TextID = R.MyInternationalizationString.uCancel;
            frameAnimateTable.AddChidren(btnCancel);
            btnCancel.ButtonClickEvent += (sender, e) =>
            {
                //关闭界面
                this.CloseForm();
            };
        }
 
        #endregion
 
        #region ■ 一般方法___________________________
 
        /// <summary>
        /// 添加菜单
        /// </summary>
        /// <param name="strMenu">菜单文本</param>
        /// <param name="selectEvent">菜单选择的事件</param>
        /// <param name="clickClose">菜单点击时,是否无条件关闭界面</param>
        public void AddMenu(string strMenu, Action selectEvent, bool clickClose = true)
        {
            //线
            if (this.frameMenuTable.ChildrenCount > 0)
            {
                var btnLine = new NormalViewControl(frameMenuTable.Width, HdlControlResourse.BottomLineHeight, false);
                btnLine.BackgroundColor = UserCenterColor.Current.ButtomLine;
                btnLine.Y = this.frameMenuTable.GetChildren(this.frameMenuTable.ChildrenCount - 1).Bottom;
                this.frameMenuTable.AddChidren(btnLine);
            }
 
            //菜单
            var btnMenu = new NormalViewControl(Application.GetRealWidth(900), this.menuHeight, false);
            if (this.frameMenuTable.ChildrenCount > 0)
            {
                btnMenu.Y = this.frameMenuTable.GetChildren(this.frameMenuTable.ChildrenCount - 1).Bottom;
            }
            btnMenu.Gravity = Gravity.CenterHorizontal;
            btnMenu.TextAlignment = TextAlignment.Center;
            btnMenu.TextColor = 0xff0075ff;
            btnMenu.TextSize = 17;
            btnMenu.Text = strMenu;
            this.frameMenuTable.AddChidren(btnMenu);
            btnMenu.ButtonClickEvent += (sender, e) =>
            {
                if (clickClose == true)
                {
                    //关闭界面
                    this.CloseForm();
                }
                selectEvent?.Invoke();
                selectEvent = null;
            };
        }
 
        #endregion
    }
}