Android-PickerView是一款仿iOS的PickerView控件,並封裝了時間選擇和選項選擇這兩種選擇器,詳細特性以下:java
其中,WheelView 可在XML佈局中直接引用:android
<com.bigkoo.pickerview.lib.WheelView android:id="@+id/wv_options" android:layout_width="match_parent" android:layout_height="wrap_content" />
compile 'com.contrarywind:Android-PickerView:3.x' //注:實際引入請把"3.x"替換成具體版本號,最新版本號請以GitHub上面提供的爲準
//時間選擇器 pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() { @Override public void onTimeSelect(Date date,View v) {//選中事件回調 tvTime.setText(getTime(date)); } }) .build(); pvTime.show();
或者git
//條件選擇器 pvOptions = new OptionsPickerView.Builder(this, new OptionsPickerView.OnOptionsSelectListener() { @Override public void onOptionsSelect(int options1, int option2, int options3 ,View v) { //返回的分別是三個級別的選中位置 String tx = options1Items.get(options1).getPickerViewText() + options2Items.get(options1).get(option2) + options3Items.get(options1).get(option2).get(options3).getPickerViewText(); tvOptions.setText(tx); } }).build(); pvOptions.setPicker(options1Items, options2Items, options3Items); pvOptions.show();
簡單的兩個步驟就能實現功能了,就是這麼簡單~ 若是默認的樣式不符合你的口味,請繼續往下看~github
pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() { @Override public void onTimeSelect(Date date,View v) {//選中事件回調 tvTime.setText(getTime(date)); } }) .setType(TimePickerView.Type.ALL)//默認所有顯示 .setCancelText("Cancel")//取消按鈕文字 .setSubmitText("Sure")//確認按鈕文字 .setContentSize(18)//滾輪文字大小 .setTitleSize(20)//標題文字大小 .setTitleText("Title")//標題文字 .setOutSideCancelable(false)//點擊屏幕,點在控件外部範圍時,是否取消顯示 .isCyclic(true)//是否循環滾動 .setTitleColor(Color.BLACK)//標題文字顏色 .setSubmitColor(Color.BLUE)//肯定按鈕文字顏色 .setCancelColor(Color.BLUE)//取消按鈕文字顏色 .setTitleBgColor(0xFF666666)//標題背景顏色 Night mode .setBgColor(0xFF333333)//滾輪背景顏色 Night mode .setRange(calendar.get(Calendar.YEAR) - 20, calendar.get(Calendar.YEAR) + 20)//默認是1900-2100年 .setDate(new Date())// 默認是系統時間*/ .setLabel("年","月","日","時","分","秒") .build();
pvOptions = new OptionsPickerView.Builder(this, new OptionsPickerView.OnOptionsSelectListener() { @Override public void onOptionsSelect(int options1, int option2, int options3 ,View v) { //返回的分別是三個級別的選中位置 String tx = options1Items.get(options1).getPickerViewText() + options2Items.get(options1).get(option2) + options3Items.get(options1).get(option2).get(options3).getPickerViewText(); tvOptions.setText(tx); } }) .setSubmitText("肯定")//肯定按鈕文字 .setCancelText("取消")//取消按鈕文字 .setTitleText("城市選擇")//標題 .setSubCalSize(18)//肯定和取消文字大小 .setTitleSize(20)//標題文字大小 .setTitleColor(Color.BLACK)//標題文字顏色 .setSubmitColor(Color.BLUE)//肯定按鈕文字顏色 .setCancelColor(Color.BLUE)//取消按鈕文字顏色 .setTitleBgColor(0xFF333333)//標題背景顏色 Night mode .setBgColor(0xFF000000)//滾輪背景顏色 Night mode .setContentTextSize(18)//滾輪文字大小 .setLinkage(false)//設置是否聯動,默認true .setLabels("省", "市", "區")//設置選擇的三級單位 .setCyclic(false, false, false)//循環與否 .setSelectOptions(1, 1, 1) //設置默認選中項 .setOutSideCancelable(false)//點擊外部dismiss default true .build(); pvOptions.setPicker(options1Items, options2Items, options3Items);//添加數據源
若是對以上的使用還有疑問的話,可參考Demo代碼,請戳我查看demo代碼app
若是仍是不能知足你產品經理的需求,那麼~ 默哀三秒鐘… 而後把源代碼下載下來本身作改動吧,源代碼基本都寫了註釋了,我也只能幫到這兒了。Github項目地址:Android-PickerViewide