3636* Item的文字长度过长时,文字会自适应缩放到Item的长度,避免显示不完全的问题
3737* 支持Dialog 模式。
3838* 支持自定义设置容器。
39+ * 实时回调。
3940
4041
4142![ TimePicker.gif] ( https://github.com/Bigkoo/Android-PickerView/blob/master/preview/timepicker.gif )
5960 startDate.set(2013,0,1);
6061 endDate.set(2020,11,1);
6162
62- #### V3.2.7版本更新说明(2017-11-15)
63- * 修复dialog模式中,在build之后,重新设定cancelable不生效的问题。
64- * 优化时间选择器,修复startYear= endYear时,滑动年份导致日期设置限制失效问题。
65- * 新增X偏移量设定,优化视觉效果。
66- * 新增农历模式。
67-
63+ #### V4.0.1版本更新说明(2018-3-21)
64+ - [x] 优化项:WheelView 抽离成独立Module。
65+ - [x] 优化项:dialog 容器由contentView替换成DecorView,避免toolbar 没有被遮盖的问题。
66+ - [x] 新增功能:滑动停止时,实时回调当前选中项的数据)。
67+ - [x] 新增功能:切换选项还原第一项(可选配置)。
68+ - [x] BUG 修复:判断时间选择器起始终止的时间范围是否超过边界。
69+ - [x] 优化项:setLineSpacingMultiplier 取消1.2 -2.0倍的限制。改成1.0-4.0f。
70+ - [x] 优化项:代码重构优化。
6871#### 更多历史版本详情,请查阅:[ 更新说明(3.x版本)] ( https://github.com/Bigkoo/Android-PickerView/wiki/%E6%9B%B4%E6%96%B0%E8%AF%B4%E6%98%8E%EF%BC%883.x%E7%89%88%E6%9C%AC%EF%BC%89 )
6972
7073#### 方法名与参数请查阅:[ 方法名与参数说明文档] ( https://github.com/Bigkoo/Android-PickerView/wiki/%E6%96%B9%E6%B3%95%E5%90%8D%E4%B8%8E%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E%EF%BC%883.x%E7%89%88%E6%9C%AC%EF%BC%89 )
7578
7679#### 1.添加Jcenter仓库 Gradle依赖:
7780``` java
78- compile ' com.contrarywind:Android-PickerView:3.2.7 '
81+ compile ' com.contrarywind:Android-PickerView:4.0.1 '
7982```
8083或者
8184
@@ -84,28 +87,25 @@ compile 'com.contrarywind:Android-PickerView:3.2.7'
8487<dependency>
8588<groupId>com.contrarywind</groupId>
8689<artifactId>Android-PickerView</artifactId>
87- <version>3.2.7 </version>
90+ <version>4.0.1 </version>
8891<type>pom</type>
8992</dependency>
9093```
91- #### 2.在Activity中添加如下代码 :
94+ #### 2.在项目中添加如下代码 :
9295
9396``` java
9497// 时间选择器
95- TimePickerView pvTime = new TimePickerView .Builder (this , new TimePickerView .OnTimeSelectListener () {
96- @Override
97- public void onTimeSelect (Date date ,View v ) {// 选中事件回调
98- tvTime. setText(getTime(date));
99- }
100- })
101- .build();
102- pvTime. setDate(Calendar . getInstance());// 注:根据需求来决定是否使用该方法(一般是精确到秒的情况),此项可以在弹出选择器的时候重新设置当前时间,避免在初始化之后由于时间已经设定,导致选中时间与当前时间不匹配的问题。
103- pvTime. show();
98+ TimePickerView pvTime = new TimePickerBuilder (MainActivity . this , new OnTimeSelectListener () {
99+ @Override
100+ public void onTimeSelect (Date date , View v ) {
101+ Toast . makeText(MainActivity . this , getTime(date), Toast . LENGTH_SHORT ). show();
102+ }
103+ }). build();
104104```
105105
106106``` java
107107// 条件选择器
108- OptionsPickerView pvOptions = new OptionsPickerView . Builder ( this , new OptionsPickerView . OnOptionsSelectListener () {
108+ OptionsPickerView pvOptions = new OptionsPickerBuilder ( MainActivity . this , new OnOptionsSelectListener () {
109109 @Override
110110 public void onOptionsSelect (int options1 , int option2 , int options3 ,View v ) {
111111 // 返回的分别是三个级别的选中位置
@@ -132,7 +132,7 @@ TimePickerView pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTi
132132 startDate. set(2013 ,0 ,1 );
133133 endDate. set(2020 ,11 ,31 );
134134
135- pvTime = new TimePickerView . Builder (this , new TimePickerView . OnTimeSelectListener () {
135+ pvTime = new TimePickerBuilder (this , new OnTimeSelectListener () {
136136 @Override
137137 public void onTimeSelect (Date date ,View v ) {// 选中事件回调
138138 tvTime. setText(getTime(date));
@@ -160,7 +160,7 @@ TimePickerView pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTi
160160```
161161
162162``` java
163- pvOptions = new OptionsPickerView . Builder (this , new OptionsPickerView .OnOptionsSelectListener () {
163+ pvOptions = new OptionsPickerBuilder (this , new OptionsPickerView .OnOptionsSelectListener () {
164164 @Override
165165 public void onOptionsSelect (int options1 , int option2 , int options3 ,View v ) {
166166 // 返回的分别是三个级别的选中位置
@@ -169,7 +169,13 @@ pvOptions = new OptionsPickerView.Builder(this, new OptionsPickerView.OnOptions
169169 + options3Items. get(options1). get(option2). get(options3). getPickerViewText();
170170 tvOptions. setText(tx);
171171 }
172- })
172+ }) .setOptionsSelectChangeListener(new OnOptionsSelectChangeListener () {
173+ @Override
174+ public void onOptionsSelectChanged (int options1 , int options2 , int options3 ) {
175+ String str = " options1: " + options1 + " \n options2: " + options2 + " \n options3: " + options3;
176+ Toast . makeText(MainActivity . this , str, Toast . LENGTH_SHORT ). show();
177+ }
178+ })
173179 .setSubmitText(" 确定" )// 确定按钮文字
174180 .setCancelText(" 取消" )// 取消按钮文字
175181 .setTitleText(" 城市选择" )// 标题
@@ -188,6 +194,7 @@ pvOptions = new OptionsPickerView.Builder(this, new OptionsPickerView.OnOptions
188194 .setSelectOptions(1 , 1 , 1 ) // 设置默认选中项
189195 .setOutSideCancelable(false )// 点击外部dismiss default true
190196 .isDialog(true )// 是否显示为对话框样式
197+ .isRestoreItem(true )// 切换时是否还原,设置默认选中第一项。
191198 .build();
192199
193200 pvOptions. setPicker(options1Items, options2Items, options3Items);// 添加数据源
@@ -197,7 +204,7 @@ pvOptions = new OptionsPickerView.Builder(this, new OptionsPickerView.OnOptions
197204``` java
198205 // 注意:自定义布局中,id为 optionspicker 或者 timepicker 的布局以及其子控件必须要有,否则会报空指针
199206 // 具体可参考demo 里面的两个自定义布局
200- pvCustomOptions = new OptionsPickerView . Builder (this , new OptionsPickerView .OnOptionsSelectListener () {
207+ pvCustomOptions = new OptionsPickerBuilder (this , new OptionsPickerView .OnOptionsSelectListener () {
201208 @Override
202209 public void onOptionsSelect (int options1 , int option2 , int options3 , View v ) {
203210 // 返回的分别是三个级别的选中位置
0 commit comments