一、介紹
Android-PickerView是一款仿iOS的PickerView控件,並封裝了時間選擇和選項選擇這兩種選擇器,詳細特性如下:
WheelView —— 基礎控件
- 帶有3D圓弧效果。
- 支持文字、顏色、大小設置。
- 支持背景顏色設置。
- 支持item的分隔線設置。
- 支持item間距設置。
- 支持設置是否循環。
OptionsPickerView —— 選項選擇器
- 支持一、二、三級聯動數據。
- 支持一、二、三級不聯動數據。
- 支持自定義布局。
- 支持自定義標題欄。
- 支持“省,市,區”等選項的單位(label)顯示、隱藏和自定義。
- 支持dialog 模式顯示。
- 支持自定義設置容器。
TimePickerView —— 時間選擇器
- 支持選擇年、月、日的范圍。
- 支持年月日時分秒顯示。
- 支持設置當前默認時間。
- 支持自定義布局。
- 支持自定義標題欄。
- 支持“年,月,日,時,分,秒”等選項的單位(label)顯示、隱藏和自定義。
- 支持dialog 模式顯示。
- 支持自定義設置容器。
其中,WheelView 可在XML布局中直接引用:
<com.bigkoo.pickerview.lib.WheelView
android:id="@+id/wv_options"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
TimePickerView —— 時間選擇器,支持年月日時分,年月日,年月,時分等格式 ,效果如下:
OptionsPickerView —— 選項選擇器,支持一,二,三級選項選擇,並且可以設置是否聯動 ,效果如下:

二、使用
1.添加 Jcenter 倉庫 Gradle 依賴:
compile 'com.contrarywind:Android-PickerView:3.x' //注:實際引入請把"3.x"替換成具體版本號,最新版本號請以GitHub上面提供的為准
GitHub的項目官方地址
2.在你的Activity中添加如下代碼:
//時間選擇器 pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() { @Override public void onTimeSelect(Date date,View v) {//選中事件回調 tvTime.setText(getTime(date)); } }) .build(); pvTime.show();
或者
//條件選擇器 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();
簡單的兩個步驟就能實現功能了,就是這么簡單~ 如果默認的樣式不符合你的口味,請繼續往下看~
三、自定義樣式
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代碼
-
如果還是不能滿足你產品經理的需求,那么~ 默哀三秒鍾… 然后把源代碼下載下來自己做改動吧,源代碼基本都寫了注釋了,我也只能幫到這兒了。Github項目地址:Android-PickerView
- 關於方法名和參數的詳細說明,請參考Wiki:請戳我查看Wiki文檔,歡迎提issue,提建議,Pull Request.
文章轉載自:http://blog.csdn.net/qq_22393017/article/details/58099486
