New file |
| | |
| | | using System; |
| | | using HDL_ON.UI.UI2.Intelligence.Automation.LogicView; |
| | | using Shared; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | |
| | | namespace HDL_ON.UI.UI2.Intelligence.Automation |
| | | { |
| | | public class EmptyClass : FrameLayout |
| | | { |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="list">表示该列表元素A-Z字母筛选显示出来</param> |
| | | /// <param name="list6">表示该列表元素显示在list前面(该列表元素不做A-Z字母筛选),没有可以为list6=null</param> |
| | | /// <param name="action">返回选中文本</param> |
| | | public void Show(List<string> list, List<string> list6, Action<string> action) |
| | | { |
| | | |
| | | |
| | | //string text = "30"; |
| | | //byte[] bytes = new byte[text.Length / 2]; |
| | | //for (int i = 0, j = 0; i < bytes.Length; j += 2, i++) |
| | | //{ |
| | | // //把16进度转换成byte |
| | | // bytes[i] = Convert.ToByte(text.Substring(j, 2), 16); |
| | | //} |
| | | ////把byte数组转换成文字 |
| | | //string str = System.Text.Encoding.UTF8.GetString(bytes); |
| | | |
| | | |
| | | var frameLayout = new FrameLayout |
| | | { |
| | | BackgroundColor = CSS.CSS_Color.viewTop, |
| | | Height = Application.GetRealHeight(112), |
| | | Width = Application.GetRealWidth(375), |
| | | }; |
| | | this.AddChidren(frameLayout); |
| | | |
| | | var topNameBtn = new Button |
| | | { |
| | | TextSize = TextSize.text18, |
| | | TextColor = CSS.CSS_Color.textColor, |
| | | Width = Application.GetRealWidth(TextSize.view375 - 60 - 60), |
| | | Height = Application.GetRealHeight(25), |
| | | Y = Application.GetRealHeight(30), |
| | | X = Application.GetRealWidth(60), |
| | | Text = "请选择品牌", |
| | | |
| | | }; |
| | | frameLayout.AddChidren(topNameBtn); |
| | | |
| | | var backBtn = new Button |
| | | { |
| | | Width = Application.GetRealWidth(12), |
| | | Height = Application.GetRealWidth(20), |
| | | X = Application.GetRealWidth(TextSize.left16), |
| | | Y = Application.GetRealHeight(32), |
| | | UnSelectedImagePath = "LogicIcon/back.png", |
| | | }; |
| | | frameLayout.AddChidren(backBtn); |
| | | backBtn.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | this.RemoveFromParent(); |
| | | }; |
| | | |
| | | var editText = new EditText |
| | | { |
| | | Width = Application.GetRealWidth(343), |
| | | Height = Application.GetRealWidth(28), |
| | | X = Application.GetRealWidth(TextSize.left16), |
| | | Y = Application.GetRealHeight(76), |
| | | BackgroundColor = CSS.CSS_Color.view, |
| | | TextColor = CSS.CSS_Color.textColor, |
| | | TextAlignment = TextAlignment.Center, |
| | | |
| | | }; |
| | | frameLayout.AddChidren(editText); |
| | | |
| | | var fram = new FrameLayout |
| | | { |
| | | Y = Application.GetRealHeight(112), |
| | | Height = Application.GetRealHeight(667 - 112), |
| | | Width = Application.GetRealWidth(375), |
| | | BackgroundColor = CSS.CSS_Color.view, |
| | | }; |
| | | this.AddChidren(fram); |
| | | |
| | | |
| | | //var list11 = new List<string> { |
| | | // "爱你", "哎呦","埃及","哈弗换壳哈弗", "爱德华多v","俺几个疯了", |
| | | // "拜了", "巴士", "百夫", "百合地理课你打算", "不度老骥伏枥", "比到九点", |
| | | // "车站","测试","此地", "才看见好得快","吃软饭","从看见二十多", |
| | | // "等待机会吧","的客户", "多喝点", "登记哦然后", "打电话", |
| | | // "恩肤霜看就看了", "饿死os","恶魔城","儿科联动", "恩六颗子弹拉拉裤洗澡了","发大学生发发", |
| | | // "真厉害i发多少", "知道你付款了发", "尬酒回复", "改进的话", "天天速度回答", "太好了开车", |
| | | // "减肥的看过","桡出口处那","如果觉得", "很舒服的","吃软饭","从看见二十多", |
| | | // "龙卷风亏大发","去好看", "多喝点", "好浪费好", "打电话"}; |
| | | if (list == null) |
| | | { |
| | | list = new List<string>(); |
| | | } |
| | | if (list6 == null) |
| | | { |
| | | list6 = new List<string>(); |
| | | } |
| | | var list1 = GetDateList(list); |
| | | list1.Add("1"); |
| | | list1.InsertRange(0, list6); |
| | | |
| | | |
| | | |
| | | var vv = new VerticalScrolViewLayout(); |
| | | fram.AddChidren(vv); |
| | | var listStr = new List<string>(); |
| | | listStr.AddRange(list1); |
| | | editText.TextChangeEventHandler += (view, strView) => |
| | | { |
| | | listStr.Clear(); |
| | | for (int i = 0; i < list1.Count; i++) |
| | | { |
| | | var s = list1[i]; |
| | | if (s.Contains(strView)) |
| | | { |
| | | listStr.Add(s); |
| | | } |
| | | } |
| | | RefreshLayout(vv, listStr, action); |
| | | |
| | | }; |
| | | |
| | | #region A-Z |
| | | |
| | | |
| | | var a_zFra = new FrameLayout |
| | | { |
| | | Y = Application.GetRealHeight(46), |
| | | X = Application.GetRealWidth(362 - 6), |
| | | Height = Application.GetRealHeight(351), |
| | | Width = Application.GetRealWidth(10 + 6), |
| | | }; |
| | | fram.AddChidren(a_zFra); |
| | | var list2 = GetList(); |
| | | for (int i = 0; i < list2.Count; i++) |
| | | { |
| | | |
| | | var a_zBtn = new Button |
| | | { |
| | | Padding = new Padding(0, 6, 0, 0), |
| | | Y = Application.GetRealHeight(i * 13), |
| | | Width = Application.GetRealWidth(16), |
| | | Height = Application.GetRealHeight(10), |
| | | Text = list2[i], |
| | | TextSize = TextSize.text10, |
| | | TextColor = CSS.CSS_Color.textConfirmColor, |
| | | Tag = list2[i], |
| | | }; |
| | | a_zFra.AddChidren(a_zBtn); |
| | | |
| | | |
| | | a_zBtn.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | |
| | | try |
| | | { |
| | | //找到索引值 |
| | | var index = listStr.IndexOf(a_zBtn.Tag.ToString()); |
| | | if (index != -1) |
| | | { |
| | | vv.ScrollToViewIndex(index); |
| | | } |
| | | else |
| | | { |
| | | if (a_zBtn.Tag.ToString() == "#") |
| | | { |
| | | vv.ScrollToViewIndex(0); |
| | | } |
| | | } |
| | | } |
| | | catch { } |
| | | }; |
| | | |
| | | } |
| | | #endregion |
| | | |
| | | RefreshLayout(vv, list1,action); |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 更新列表Viev |
| | | /// </summary> |
| | | /// <param name="vv">父控件</param> |
| | | /// <param name="list">显示列表</param> |
| | | private void RefreshLayout(VerticalScrolViewLayout vv, List<string> list,Action<string> action) |
| | | { |
| | | vv.RemoveAll(); |
| | | foreach (var str in list) |
| | | { |
| | | var rowLayout = new RowLayout { LineColor = CSS.CSS_Color.view }; |
| | | var textName = new Button |
| | | { |
| | | TextSize = TextSize.text16, |
| | | TextColor = CSS.CSS_Color.textColor, |
| | | Width = Application.GetRealWidth(300), |
| | | Height = Application.GetRealHeight(22), |
| | | X = Application.GetRealWidth(16), |
| | | Gravity = Gravity.CenterVertical, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | Text = str, |
| | | }; |
| | | var clickBtn = new Button |
| | | { |
| | | Tag = str, |
| | | Width = Application.GetRealWidth(350), |
| | | }; |
| | | |
| | | if (Exist(str)) |
| | | { |
| | | //因为字母没有点击事件 |
| | | rowLayout.Height = Application.GetRealHeight(24); |
| | | rowLayout.BackgroundColor = CSS.CSS_Color.viewTop; |
| | | textName.TextSize = TextSize.text12; |
| | | rowLayout.AddChidren(textName); |
| | | } |
| | | else |
| | | { |
| | | rowLayout.Height = Application.GetRealHeight(44); |
| | | rowLayout.AddChidren(textName); |
| | | rowLayout.AddChidren(clickBtn); |
| | | } |
| | | vv.AddChidren(rowLayout); |
| | | clickBtn.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | //找到索引值 |
| | | var index = list.IndexOf(clickBtn.Tag.ToString()); |
| | | |
| | | this.RemoveFromParent(); |
| | | }; |
| | | |
| | | } |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 列表是否包含该值(true=包含,false=不包含) |
| | | /// </summary> |
| | | /// <param name="str"></param> |
| | | /// <returns></returns> |
| | | private bool Exist(string str) |
| | | { |
| | | |
| | | if (GetList().Contains(str) || "主流品牌" == str) |
| | | { |
| | | return true; |
| | | } |
| | | else |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取显示列表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | private List<string> GetDateList(List<string> mList) |
| | | { |
| | | var list = new List<string>(); |
| | | //获取A-Z字母列表 |
| | | var a_zList = GetList(false); |
| | | //遍历A-Z字母列表 |
| | | for (int i = 0; i < a_zList.Count; i++) |
| | | { |
| | | var zimu = a_zList[i]; |
| | | //遍历字符串列表 |
| | | for (int a = 0; a < mList.Count; a++) |
| | | { |
| | | var str = mList[a]; |
| | | //提取字符串第一位 |
| | | string s = str.Substring(0, 1); |
| | | //返回字符串第一位首字母(大写) |
| | | var a_z = GetCharSpellCode(s); |
| | | //判断是否同字母 |
| | | if (zimu == a_z) |
| | | { |
| | | //判断列表是否存在字母 |
| | | if (!list.Contains(zimu)) |
| | | { |
| | | //添加字母 |
| | | list.Add(zimu); |
| | | } |
| | | //添加首字同一个字母的数据 |
| | | list.Add(str); |
| | | } |
| | | |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取A-Z字母列表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | private List<string> GetList(bool value = true) |
| | | { |
| | | var list = new List<string>(); |
| | | if (value) |
| | | { |
| | | list.Add("#"); |
| | | } |
| | | for (int j = 65; j <= 90; j++) |
| | | { |
| | | char c = (char)j; |
| | | string s = c.ToString(); |
| | | list.Add(s); |
| | | |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取汉字首字母 |
| | | /// </summary> |
| | | /// <param name="textValue"></param> |
| | | /// <returns></returns> |
| | | private string GetCharSpellCode(string textValue) |
| | | { |
| | | long iCnChar; |
| | | |
| | | byte[] ZW = Encoding.GetEncoding("gb2312").GetBytes(textValue); |
| | | |
| | | //如果是字母,则直接返回 |
| | | if (ZW.Length == 1) |
| | | { |
| | | return textValue.ToUpper(); |
| | | } |
| | | else |
| | | { |
| | | // get the array of byte from the single char |
| | | int i1 = (short)(ZW[0]); |
| | | int i2 = (short)(ZW[1]); |
| | | iCnChar = i1 * 256 + i2; |
| | | } |
| | | |
| | | //expresstion |
| | | //table of the constant list |
| | | // 'A'; //45217..45252 |
| | | // 'B'; //45253..45760 |
| | | // 'C'; //45761..46317 |
| | | // 'D'; //46318..46825 |
| | | // 'E'; //46826..47009 |
| | | // 'F'; //47010..47296 |
| | | // 'G'; //47297..47613 |
| | | |
| | | // 'H'; //47614..48118 |
| | | // 'J'; //48119..49061 |
| | | // 'K'; //49062..49323 |
| | | // 'L'; //49324..49895 |
| | | // 'M'; //49896..50370 |
| | | // 'N'; //50371..50613 |
| | | // 'O'; //50614..50621 |
| | | // 'P'; //50622..50905 |
| | | // 'Q'; //50906..51386 |
| | | |
| | | // 'R'; //51387..51445 |
| | | // 'S'; //51446..52217 |
| | | // 'T'; //52218..52697 |
| | | //没有U,V |
| | | // 'W'; //52698..52979 |
| | | // 'X'; //52980..53640 |
| | | // 'Y'; //53689..54480 |
| | | // 'Z'; //54481..55289 |
| | | |
| | | // iCnChar match the constant |
| | | if ((iCnChar >= 45217) && (iCnChar <= 45252)) |
| | | { |
| | | return "A"; |
| | | } |
| | | else if ((iCnChar >= 45253) && (iCnChar <= 45760)) |
| | | { |
| | | return "B"; |
| | | } |
| | | else if ((iCnChar >= 45761) && (iCnChar <= 46317)) |
| | | { |
| | | return "C"; |
| | | } |
| | | else if ((iCnChar >= 46318) && (iCnChar <= 46825)) |
| | | { |
| | | return "D"; |
| | | } |
| | | else if ((iCnChar >= 46826) && (iCnChar <= 47009)) |
| | | { |
| | | return "E"; |
| | | } |
| | | else if ((iCnChar >= 47010) && (iCnChar <= 47296)) |
| | | { |
| | | return "F"; |
| | | } |
| | | else if ((iCnChar >= 47297) && (iCnChar <= 47613)) |
| | | { |
| | | return "G"; |
| | | } |
| | | else if ((iCnChar >= 47614) && (iCnChar <= 48118)) |
| | | { |
| | | return "H"; |
| | | } |
| | | else if ((iCnChar >= 48119) && (iCnChar <= 49061)) |
| | | { |
| | | return "J"; |
| | | } |
| | | else if ((iCnChar >= 49062) && (iCnChar <= 49323)) |
| | | { |
| | | return "K"; |
| | | } |
| | | else if ((iCnChar >= 49324) && (iCnChar <= 49895)) |
| | | { |
| | | return "L"; |
| | | } |
| | | else if ((iCnChar >= 49896) && (iCnChar <= 50370)) |
| | | { |
| | | return "M"; |
| | | } |
| | | |
| | | else if ((iCnChar >= 50371) && (iCnChar <= 50613)) |
| | | { |
| | | return "N"; |
| | | } |
| | | else if ((iCnChar >= 50614) && (iCnChar <= 50621)) |
| | | { |
| | | return "O"; |
| | | } |
| | | else if ((iCnChar >= 50622) && (iCnChar <= 50905)) |
| | | { |
| | | return "P"; |
| | | } |
| | | else if ((iCnChar >= 50906) && (iCnChar <= 51386)) |
| | | { |
| | | return "Q"; |
| | | } |
| | | else if ((iCnChar >= 51387) && (iCnChar <= 51445)) |
| | | { |
| | | return "R"; |
| | | } |
| | | else if ((iCnChar >= 51446) && (iCnChar <= 52217)) |
| | | { |
| | | return "S"; |
| | | } |
| | | else if ((iCnChar >= 52218) && (iCnChar <= 52697)) |
| | | { |
| | | return "T"; |
| | | } |
| | | else if ((iCnChar >= 52698) && (iCnChar <= 52979)) |
| | | { |
| | | return "W"; |
| | | } |
| | | else if ((iCnChar >= 52980) && (iCnChar <= 53640)) |
| | | { |
| | | return "X"; |
| | | } |
| | | else if ((iCnChar >= 53689) && (iCnChar <= 54480)) |
| | | { |
| | | return "Y"; |
| | | } |
| | | else if ((iCnChar >= 54481) && (iCnChar <= 55289)) |
| | | { |
| | | return "Z"; |
| | | } |
| | | else return ("ZZ"); |
| | | } |
| | | } |
| | | } |