Android-PickerView系列之介紹與使用篇(一)
宣告:本文為博主原創文章,轉載請註明出處:小嵩的部落格
一、介紹
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上面提供的為準
2.在專案中新增如下程式碼:
//時間選擇器
pvTime = new TimePickerView.Builder(MainActivity.this, new TimePickerView.OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date,View v) {//選中事件回撥
tvTime.setText(getTime(date));
}
})
.build();
pvTime.show();
或者
//條件選擇器
pvOptions = new OptionsPickerView.Builder(MainActivity.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(MainActivity.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(MainActivity.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.
相關推薦
Android-PickerView系列之介紹與使用篇(一)
宣告:本文為博主原創文章,轉載請註明出處:小嵩的部落格 一、介紹 Android-PickerView是一款仿iOS的PickerView控制元件,並封裝了時間選擇和選項選擇這兩種選擇器,詳細特性如下: WheelView —— 基礎控制元件
談談-Android-PickerView系列之源碼解析(二)
需求 動態 () comm tag 多個 來源 ntc 寬高 前言 WheelView想必大家或多或少都有一定了解, 它是一款3D滾輪控件,效果類似IOS 上面的UIpickerview 。按照國際慣例,先放一張效果圖: 以上是Android-PickerView
WPF入門教程系列六——布局介紹與Canvas(一)
mouse 建議 geo 自動調整 範圍 添加 ges ans colors 從這篇文章開始是對WPF中的界面如何布局做一個較簡單的介紹,大家都知道:UI是做好一個軟件很重要的因素,如果沒有一個漂亮的UI,功能做的再好也無法吸引很多用戶使用,而且沒有漂亮的界面,那麽普通用
探索ASP.NET MVC5系列之~~~2.檢視篇(上)---包含XSS防禦和非同步分部檢視的處理
其實任何資料裡面的任何知識點都無所謂,都是不重要的,重要的是學習方法,自行摸索的過程(不妥之處歡迎指正) 4.共用其他檢視 不同控制器渲染同一個檢視檔案。這個應用場景還是比較多的,比如同樣是Article的集合,一個是顯示最新文章列表,一個是顯示文章列表,一個是顯示編輯推薦文章列表,基
探索ASP.NET MVC5系列之~~~3.檢視篇(下)---包含常用表單和暴力解猜防禦
其實任何資料裡面的任何知識點都無所謂,都是不重要的,重要的是學習方法,自行摸索的過程(不妥之處歡迎指正) 這幾天忙著幫別人普及安全,今天就把這篇文章結束掉,明天講下 “過度提交” 的防禦。這次開篇就激烈點==》爆破演示: 開啟Burp 設定監聽埠==》8080 設定一下代理:
死磕 java同步系列之AQS終篇(面試)
問題 (1)AQS的定位? (2)AQS的重要組成部分? (3)AQS運用的設計模式? (4)AQS的總體流程? 簡介 AQS的全稱是AbstractQueuedSynchronizer,它的定位是為Java中幾乎所有的鎖和同步器提供一個基礎框架。 在之前的章節中,我們一起學習了ReentrantLock、R
內核調試神器SystemTap — 簡單介紹與使用(一)
kprobe utils its preview response art sym about output a linux trace/probe tool. 官網:https://sourceware.org/systemtap/ 簡單介紹 S
構建之法--探索篇(一)
構建 編寫 裏的 set namespace 對象 之前 定義 時也 問題一: 在Cust中無法找到telephone的get方法,這裏是因為我之前沒有telephone的成員變量,加上之後有沒有寫telephone的get方法; 解決方案:只要在Cust這個類裏面,加上
Docker系列之CentOS7安裝Docker(一)
add 程序 發布 更新 介紹 entos star alt ice 0、前言 整體架構目錄:ASP.NET Core分布式項目實戰-目錄 一、瞎扯淡(只講有用的) 感興趣的同學可以上網搜索一下docker具體的介紹。我這邊主要介紹偏實戰的內容,不喜勿噴,有問題也請
Gentoo無線網絡卡安裝之基礎知識篇(一)
已開通新的部落格,後續文字都會發到新部落格 http://www.0xfree.top 最近接觸了一下Gentoo,在無線網絡卡方面遇到了問題,於是便廣泛的查詢資料,雖然到最後還是沒有搞定,但是把過程中積累下來的東西和大家分享分享,有什麼錯誤的地方,歡迎大家回帖指正 如
持續部署之jenkins與gitlab(一)
持續部署之jenkins與gitlab(一) 主要部分 安裝部署Jenkins和gitlib 瞭解gitlib的常用命令 部署haproxy與tomcat環境 配置Jenkins使用gitlib更新程式碼 通過sonar實現程式碼檢測 實現gitlib觸發Jenkins自動部署 通過Jenkins實現自
JavaScript學習之小白篇(一)
好好學習 ,天天向上。Are you ready? 一、JS概述 1. 什麼是JS? Javascript是(基於物件)和(事件驅動)的(客戶端指令碼)語言。 2. 哪一年?哪家公司?誰?第一個名字? 1995 網景 布蘭登 livescript 3. W3C第一套標準:ECMA-262
ArcGIS for Android 100.3的學習與應用(一) 如何繪製點和線?
平時工作中,我們接觸到的地圖類開發平臺有很多,最常用的有高德,百度,騰訊地圖。而且它們都有自己的開發者平臺和文件供我們使用。基本能滿足我們的業務需求。 由於公司裡的專案會涉及一些地圖資料統計和展示方面的需求,同時也會發布一些地圖服務,所以選擇了使用在地圖方面比較牛逼的ArcGIS。 把平時遇
Qt開發之中國象棋篇(一):工程概述
最近看一篇關於C++實現中國象棋的部落格,於是基於該博主的框架,自己嘗試實現了一個簡單基於Qt的中國象棋遊戲,只是實現了簡單的人人對戰,還沒有實現較為複雜的人機對戰。主要涉及Qt的重繪事件QPaintEvent,用來實現棋盤的
Java多執行緒之進階篇(一)
一、執行緒池 1.1 執行緒池的建立 1.1.1 ThreadPoolExecutor 1.1.2 執行緒池的分類
Trinity介紹與使用(一)
<span class="s1">$TRINITY_HOME/util/filter_fasta_by_rsem_values.pl </span><span class="s1">--rsem_output=/path/to/RSEM.isoforms.result
Android四大元件之Service全面解析(一)
在小杰的上一篇博文中給大家講了一下Android四大元件之一的Activity,也是最重要的,這一篇文章,給大家講一下Service。 什麼是Service Service是Android的四大元件之一應用廣泛,它是一個能在後臺進行一個長時間的操作並且不提供使用者介面
Redis Cluster介紹與搭建(一)
原文地址:https:// https://blog.csdn.net/men_wen/article/details/72853078Redis Cluster 介紹與搭建1. Redis Cluster介紹Redis Cluster是Redis的分散式解決方案,在Redi
驗證碼破解技術四部曲之環境搭建篇(一)
前言 轉眼就變成大四狗了,大學期間做的比較深入的技術是爬蟲,但是爬蟲也有很多高階的技術沒有涉及,比如說驗證碼的破解便是其中之一,再加上我對其非常感興趣,於是乎,開始苦學影象處理、學習機器學習,驗證碼破解也有了些眉頭。 以下是我破解的幾種驗證碼。 1、最容易破解的
【Android測試】之LogCat命令列(一)
預備知識 首先還是先了解一下上節沒有提到的知識,我覺得還是比較重要的,就是log分類的幾種級別(prority): v (verbose) d (debug) i (information) w (warning) e (error) 這