using Shared; using HDL_ON.UI.CSS; using System; using System.Text; namespace HDL_ON.Stan { /// /// 文本输入的弹窗界面(不用加入父控件) /// public class TextInputDialog { #region ■ 变量声明___________________________ /// /// 标题文本 /// private string titleText = string.Empty; /// /// 初始值 /// private string textValue = string.Empty; /// /// 当输入框为空白时的提示文本 /// private string emptyMsg = string.Empty; /// /// 确认按钮的文本 /// private string buttonOkText = string.Empty; /// /// 取消按钮的文本 /// private string buttonCancelText = string.Empty; /// /// 是否是密码输入 /// private bool isPassword = false; #endregion #region ■ 初始化_____________________________ /// /// 文本输入的弹窗界面(不用加入父控件) /// /// 标题文本 /// 初始值 /// 当输入框为空白时的提示文本 /// 确认按钮的文本 /// 取消按钮的文本 /// 是否是密码输入 public TextInputDialog(string i_title, string i_text, string i_emptyMsg, string i_buttonOkText = null, string i_buttonCancelText = null, bool i_isPassword = false) { this.titleText = i_title; this.textValue = i_text; this.emptyMsg = i_emptyMsg; //确认按钮文本 this.buttonOkText = i_buttonOkText == null ? Language.StringByID(StringId.Confirm) : i_buttonOkText; this.buttonCancelText = i_buttonCancelText == null ? Language.StringByID(StringId.Cancel) : i_buttonCancelText; this.isPassword = i_isPassword; } #endregion #region ■ 弹窗显示___________________________ /// /// 弹窗显示 /// /// 回调函数,参数为输入框的值 public void Show(Action finishEvent) { var dialogForm = new Dialog(); dialogForm.BackgroundColor = CSS_Color.DialogTransparentColor1; //主控件 var frameMain = new NormalFrameLayout(); dialogForm.AddChidren(frameMain); dialogForm.Show(); //中间区域 var frameCenter = new NormalFrameLayout(); frameCenter.Gravity = Gravity.Center; frameCenter.Width = Application.GetRealWidth(270); frameCenter.Height = Application.GetRealHeight(50); frameCenter.BackgroundColor = CSS_Color.MainBackgroundColor; frameCenter.Radius = (uint)Application.GetMinRealAverage(10); frameMain.AddChidren(frameCenter); //标题 var btnTitle = new NormalViewControl(frameCenter.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(24), false); btnTitle.Y = Application.GetRealHeight(19); btnTitle.Gravity = Gravity.CenterHorizontal; btnTitle.TextColor = CSS_Color.MainColor; btnTitle.TextSize = CSS_FontSize.SubheadingFontSize; btnTitle.TextAlignment = TextAlignment.Center; btnTitle.IsBold = true; btnTitle.Text = this.titleText.Replace("{0}", "\r\n"); btnTitle.Height = Application.GetRealHeight(24) * btnTitle.GetRealRowCountByText(); btnTitle.IsMoreLines = true; frameCenter.AddChidren(btnTitle); //输入框的背景 var frameInput = new FrameLayout(); frameInput.Y = btnTitle.Bottom + Application.GetRealHeight(16); frameInput.Width = Application.GetRealWidth(222); frameInput.Height = Application.GetRealHeight(40); frameInput.Gravity = Gravity.CenterHorizontal; frameInput.Radius = (uint)Application.GetRealWidth(4); frameInput.BackgroundColor = CSS_Color.BackgroundColor; frameCenter.AddChidren(frameInput); //输入框 var txtInput = new TextInputControl(174, 24, true); txtInput.X = Application.GetRealWidth(12); txtInput.Gravity = Gravity.CenterVertical; txtInput.TextColor = CSS_Color.FirstLevelTitleColor; txtInput.Text = this.textValue; frameInput.AddChidren(txtInput); //密码型 if (this.isPassword == true) { txtInput.IsNumberKeyboardType = true; txtInput.SecureTextEntry = true; //密码可视图标 var btnIcon = new IconViewControl(24); btnIcon.X = txtInput.Right + Application.GetRealWidth(8); btnIcon.Gravity = Gravity.CenterVertical; btnIcon.UnSelectedImagePath = "LoginIcon/HidePasswordIcon.png"; btnIcon.SelectedImagePath = "LoginIcon/ShowPasswordIcon.png"; frameInput.AddChidren(btnIcon); btnIcon.ButtonClickEvent += (sender, e) => { btnIcon.IsSelected = !btnIcon.IsSelected; txtInput.SecureTextEntry = !txtInput.SecureTextEntry; }; } else { //取消图标 var btnIcon = new IconViewControl(24); btnIcon.X = txtInput.Right + Application.GetRealWidth(8); btnIcon.Gravity = Gravity.CenterVertical; btnIcon.UnSelectedImagePath = "LoginIcon/1.png"; frameInput.AddChidren(btnIcon); btnIcon.ButtonClickEvent += (sender, e) => { txtInput.Text = string.Empty; }; } //错误显示消息 var btnErrorMsg = new NormalViewControl(frameInput.Width, Application.GetRealHeight(21), false); btnErrorMsg.Y = frameInput.Bottom; btnErrorMsg.Gravity = Gravity.CenterHorizontal; btnErrorMsg.TextColor = CSS_Color.WarningColor; btnErrorMsg.Text = this.emptyMsg.Replace("{0}", "\r\n"); btnErrorMsg.IsMoreLines = true; btnErrorMsg.TextAlignment = TextAlignment.TopLeft; btnErrorMsg.Height = Application.GetRealHeight(21) * btnErrorMsg.GetRealRowCountByText(); btnErrorMsg.Visible = false; frameCenter.AddChidren(btnErrorMsg); //底部按钮的高度 int buttomButtonHeigth = Application.GetRealHeight(43); //调整白色桌布的高度和坐标 frameCenter.Height = frameInput.Bottom + Application.GetRealHeight(31) + buttomButtonHeigth; //白色背景在蓝湖上的坐标为264,高度为172 然后让它按这个比例置于桌布 frameCenter.Y = Application.GetRealHeight(264) - (frameCenter.Height - Application.GetRealHeight(172)) / 2; //取消 var btnCancel = new NormalViewControl(frameCenter.Width / 2, buttomButtonHeigth, false); btnCancel.Gravity = Gravity.BottomLeft; btnCancel.TextAlignment = TextAlignment.Center; btnCancel.TextSize = CSS_FontSize.SubheadingFontSize; btnCancel.Text = this.buttonCancelText; frameCenter.AddChidren(btnCancel); btnCancel.ButtonClickEvent += (sender, e) => { //关闭界面 dialogForm.Close(); finishEvent = null; }; //线 var btnLine = new NormalViewControl(frameCenter.Width / 2, HdlControlResourse.BottomLineHeight, false); btnLine.Y = btnCancel.Y - HdlControlResourse.BottomLineHeight; btnLine.BackgroundColor = CSS_Color.DividingLineColor; frameCenter.AddChidren(btnLine); //确认 var btnConfirm = new NormalViewControl(frameCenter.Width - btnCancel.Width, buttomButtonHeigth + HdlControlResourse.BottomLineHeight, false); btnConfirm.X = btnCancel.Right; btnConfirm.Y = btnLine.Y; btnConfirm.TextAlignment = TextAlignment.Center; btnConfirm.TextSize = CSS_FontSize.SubheadingFontSize; btnConfirm.TextColor = CSS_Color.MainBackgroundColor; btnConfirm.BackgroundColor = CSS_Color.MainColor; btnConfirm.Text = this.buttonOkText; frameCenter.AddChidren(btnConfirm); btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), HDLUtils.RectCornerBottomRight); btnConfirm.ButtonClickEvent += (sender, e) => { string inputValue = txtInput.Text.Trim(); if (inputValue == string.Empty && string.IsNullOrEmpty(this.emptyMsg) != true) { //空白的时候,提示消息 btnErrorMsg.Visible = true; //看看消息显示的控件有没有大于31,大于的话,则算出它增加的宽度(31是输入框到底部按钮Y轴的空白区域) int value = 0; if (btnErrorMsg.Height > Application.GetRealHeight(31)) { //5是与底部按钮Y轴的间距 value = btnErrorMsg.Height - Application.GetRealHeight(31) + Application.GetRealHeight(5); } //调整白色桌布的高度和坐标 frameCenter.Height = frameInput.Bottom + Application.GetRealHeight(31) + buttomButtonHeigth + value; //白色背景在蓝湖上的坐标为264,高度为172 然后让它按这个比例置于桌布 frameCenter.Y = Application.GetRealHeight(264) - (frameCenter.Height - Application.GetRealHeight(172)) / 2; //两个按钮置底 btnCancel.Gravity = Gravity.BottomLeft; btnLine.Y = btnCancel.Y - HdlControlResourse.BottomLineHeight; btnConfirm.Y = btnLine.Y; return; } //关闭界面 dialogForm.Close(); //回调函数 finishEvent?.Invoke(txtInput.Text.Trim()); }; } #endregion } }