using System; using System.Collections.Generic; using Com.Hdl.Widget.Pickerview.Builder; using Com.Hdl.Widget.Pickerview.Listener; using Android.Content; namespace Shared { public class PickerView { //public static void Show(List> list, Action action, string sure = "Sure", string beforeValue = "") //{ // if (list == null) { // return; // } // var pv = new Shared.Droid.TCL.PickerView(); // pv.Show(Application.Activity, list, (obj) => { // action?.Invoke(obj); // }); //} /// /// 一级数组弹窗 支持设置默认选中索引,自定义标题,确认按钮,取消按钮字符 /// public static void Show(List mList, Action action, int mSelectIndex1 = 0, string title = "", string sure = "确认", string cancel = "取消") { if (mList == null) { return; } var mOptionsPickerBuilder = new OptionsPickerBuilder(Application.Activity, new OnOptionsSelectListenerCallBack(action)) .SetTitleText(title) .SetSubmitText(sure) .SetCancelText(cancel) .SetContentTextSize(20)//设置滚轮文字大小 .SetSelectOptions(mSelectIndex1) //.SetDividerColor(BLACK)//设置分割线的颜色 //.SetSelectOptions(0, 1)//默认选中项 //.SetBgColor(BLACK) //.SetTitleBgColor(BLACK) //.SetTitleColor(BLACK) //.SetCancelColor(BLACK) //.SetSubmitColor(BLACK) //.SetTextColorCenter(BLACK) .IsRestoreItem(true)//切换时是否还原,设置默认选中第一项。 .IsCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。 //.SetLabels("省", "市", "区") .SetOutSideColor(HDLUtils.GetUIColorWithUint(0x80000000)) //设置外部遮罩颜色 .Build(); mOptionsPickerBuilder.SetPicker(mList); mOptionsPickerBuilder.Show(); } private static string SPLIT_FLAG = ">-<"; /// /// 二级联动弹窗 支持设置默认选中索引,自定义标题,确认按钮,取消按钮字符 /// public static void ShowSecondary(List mFirstList, List> mSecondList, Action action, int mSelectIndex1 = 0, int mSelectIndex2 = 0, string title = "", string sure = "确认", string cancel = "取消") { if (mFirstList == null) { return; } if (mFirstList.Count != mSecondList.Count) { return; } var mSpliceList = new List();//拼接后的数组 for (int i = 0; i < mSecondList.Count; i++) { string mDataStr = ""; for (int j = 0; j < mSecondList[i].Count; j++) { mDataStr += mSecondList[i][j] + SPLIT_FLAG; } mSpliceList.Add(mDataStr); } var mOptionsPickerBuilder = new OptionsPickerBuilder(Application.Activity, new OnSecondaryOptionsSelectListenerCallBack(action)) .SetTitleText(title) .SetSubmitText(sure) .SetCancelText(cancel) .SetContentTextSize(20)//设置滚轮文字大小 .SetSelectOptions(mSelectIndex1, mSelectIndex2) //.SetDividerColor(BLACK)//设置分割线的颜色 //.SetSelectOptions(0, 1)//默认选中项 //.SetBgColor(BLACK) //.SetTitleBgColor(BLACK) //.SetTitleColor(BLACK) //.SetCancelColor(BLACK) //.SetSubmitColor(BLACK) //.SetTextColorCenter(BLACK) .IsRestoreItem(true)//切换时是否还原,设置默认选中第一项。 .IsCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。 //.SetLabels("省", "市", "区") .SetOutSideColor(0x00000000) //设置外部遮罩颜色 .Build(); mOptionsPickerBuilder.SetPickerString(mFirstList, mSpliceList); mOptionsPickerBuilder.Show(); } /// /// 不联动支持自定义标题,确认按钮,取消按钮文字 /// public static void ShowNormal(List mFirstList, List mSecondList, List mThirdList, Action action, int mSelectIndex1 = 0, int mSelectIndex2 = 0, int mSelectIndex3 = 0, string title = "", string sure = "确认", string cancel = "取消") { if (mFirstList == null) { return; } if (mSecondList == null) { return; } var mOptionsPickerBuilder = new OptionsPickerBuilder(Application.Activity, new OnOptionsSelectListenerCallBack3(action)) .SetTitleText(title) .SetSubmitText(sure) .SetCancelText(cancel) .SetContentTextSize(20)//设置滚轮文字大小 .SetSelectOptions(mSelectIndex1, mSelectIndex2, mSelectIndex3) //.SetDividerColor(BLACK)//设置分割线的颜色 //.SetSelectOptions(0, 1)//默认选中项 //.SetBgColor(BLACK) //.SetTitleBgColor(BLACK) //.SetTitleColor(BLACK) //.SetCancelColor(BLACK) //.SetSubmitColor(BLACK) //.SetTextColorCenter(BLACK) .IsRestoreItem(true)//切换时是否还原,设置默认选中第一项。 .IsCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。 //.SetLabels("省", "市", "区") .SetOutSideColor(0x00000000) //设置外部遮罩颜色 .Build(); mOptionsPickerBuilder.SetNPicker(mFirstList, mSecondList, mThirdList); mOptionsPickerBuilder.Show(); } /// /// 一级回调事件 /// public class OnOptionsSelectListenerCallBack : Java.Lang.Object, IOnOptionsSelectListener { Action mAction; public OnOptionsSelectListenerCallBack(Action action) { mAction = action; } public void OnOptionsSelect(int selectIndex1, int selectIndex2, int selectIndex3, Android.Views.View p3) { //Shared.HDLUtils.WriteLine("OnOptionsSelect: selectIndex1:" + selectIndex1 + " selectIndex2:" + selectIndex2); mAction?.Invoke(selectIndex1); } } /// /// 二级联动回调事件 /// public class OnSecondaryOptionsSelectListenerCallBack : Java.Lang.Object, IOnOptionsSelectListener { Action mActionSecondary; public OnSecondaryOptionsSelectListenerCallBack(Action action) { mActionSecondary = action; } public void OnOptionsSelect(int selectIndex1, int selectIndex2, int selectIndex3, Android.Views.View p3) { //Shared.HDLUtils.WriteLine("OnOptionsSelect: selectIndex1:" + selectIndex1 + " selectIndex2:" + selectIndex2); mActionSecondary?.Invoke(selectIndex1, selectIndex2); } } /// /// 三级回调事件 /// public class OnOptionsSelectListenerCallBack3 : Java.Lang.Object, IOnOptionsSelectListener { Action mAction; public OnOptionsSelectListenerCallBack3(Action action) { mAction = action; } public void OnOptionsSelect(int selectIndex1, int selectIndex2, int selectIndex3, Android.Views.View p3) { //Shared.HDLUtils.WriteLine("OnOptionsSelect: selectIndex1:" + selectIndex1 + " selectIndex2:" + selectIndex2); mAction?.Invoke(selectIndex1, selectIndex2, selectIndex3); } } } }