2323
2424/**
2525 * 日期时间选择器,可同时选中日期及时间,另见{@link DatePicker}和{@link TimePicker}
26- * <p>
26+ * <p/ >
2727 * Created by Dong on 2016/5/13.
2828 * Refactored by 李玉江 on 2016/12/31.
2929 */
@@ -80,6 +80,7 @@ public class DateTimePicker extends WheelPicker {
8080 private int endYear = 2020 , endMonth = 12 , endDay = 31 ;
8181 private int startHour , startMinute = 0 ;
8282 private int endHour , endMinute = 59 ;
83+ private boolean useWeight = false ;
8384
8485 @ IntDef (value = {NONE , YEAR_MONTH_DAY , YEAR_MONTH , MONTH_DAY })
8586 @ Retention (RetentionPolicy .SOURCE )
@@ -123,6 +124,13 @@ public DateTimePicker(Activity activity, @DateMode int dateMode, @TimeMode int t
123124 this .timeMode = timeMode ;
124125 }
125126
127+ /**
128+ * 是否使用比重来平分布局
129+ */
130+ public void setUseWeight (boolean useWeight ) {
131+ this .useWeight = useWeight ;
132+ }
133+
126134 /**
127135 * 设置年份范围
128136 *
@@ -405,6 +413,11 @@ protected View makeCenterView() {
405413 final WheelView dayView = new WheelView (activity );
406414 final WheelView hourView = new WheelView (activity );
407415 final WheelView minuteView = new WheelView (activity );
416+ yearView .setUseWeight (useWeight );
417+ monthView .setUseWeight (useWeight );
418+ dayView .setUseWeight (useWeight );
419+ hourView .setUseWeight (useWeight );
420+ minuteView .setUseWeight (useWeight );
408421
409422 if (dateMode == YEAR_MONTH_DAY || dateMode == YEAR_MONTH ) {
410423 yearView .setLayoutParams (new LinearLayout .LayoutParams (0 , WRAP_CONTENT , 1.0f ));
@@ -419,7 +432,7 @@ protected View makeCenterView() {
419432 @ Override
420433 public void onSelected (int index ) {
421434 selectedYearIndex = index ;
422- String selectedYearStr = years .get (index );
435+ String selectedYearStr = years .get (selectedYearIndex );
423436 if (onWheelListener != null ) {
424437 onWheelListener .onYearWheeled (selectedYearIndex , selectedYearStr );
425438 }
@@ -430,8 +443,14 @@ public void onSelected(int index) {
430443 int selectedYear = DateUtils .trimZero (selectedYearStr );
431444 changeMonthData (selectedYear );
432445 monthView .setItems (months , selectedMonthIndex );
446+ if (onWheelListener != null ) {
447+ onWheelListener .onMonthWheeled (selectedMonthIndex , months .get (selectedMonthIndex ));
448+ }
433449 changeDayData (selectedYear , DateUtils .trimZero (months .get (selectedMonthIndex )));
434450 dayView .setItems (days , selectedDayIndex );
451+ if (onWheelListener != null ) {
452+ onWheelListener .onDayWheeled (selectedDayIndex , days .get (selectedDayIndex ));
453+ }
435454 }
436455 });
437456 layout .addView (yearView );
@@ -446,7 +465,7 @@ public void onSelected(int index) {
446465 }
447466
448467 if (dateMode != NONE ) {
449- monthView .setLayoutParams (new LinearLayout .LayoutParams (0 , WRAP_CONTENT ,1.0f ));
468+ monthView .setLayoutParams (new LinearLayout .LayoutParams (0 , WRAP_CONTENT , 1.0f ));
450469 monthView .setTextSize (textSize );
451470 monthView .setTextColor (textColorNormal , textColorFocus );
452471 monthView .setDividerConfig (dividerConfig );
@@ -458,7 +477,7 @@ public void onSelected(int index) {
458477 @ Override
459478 public void onSelected (int index ) {
460479 selectedMonthIndex = index ;
461- String selectedMonthStr = months .get (index );
480+ String selectedMonthStr = months .get (selectedMonthIndex );
462481 if (onWheelListener != null ) {
463482 onWheelListener .onMonthWheeled (selectedMonthIndex , selectedMonthStr );
464483 }
@@ -473,6 +492,9 @@ public void onSelected(int index) {
473492 }
474493 changeDayData (selectedYear , DateUtils .trimZero (selectedMonthStr ));
475494 dayView .setItems (days , selectedDayIndex );
495+ if (onWheelListener != null ) {
496+ onWheelListener .onDayWheeled (selectedDayIndex , days .get (selectedDayIndex ));
497+ }
476498 }
477499 }
478500 });
@@ -488,7 +510,7 @@ public void onSelected(int index) {
488510 }
489511
490512 if (dateMode == YEAR_MONTH_DAY || dateMode == MONTH_DAY ) {
491- dayView .setLayoutParams (new LinearLayout .LayoutParams (0 , WRAP_CONTENT ,1.0f ));
513+ dayView .setLayoutParams (new LinearLayout .LayoutParams (0 , WRAP_CONTENT , 1.0f ));
492514 dayView .setTextSize (textSize );
493515 dayView .setTextColor (textColorNormal , textColorFocus );
494516 dayView .setDividerConfig (dividerConfig );
@@ -501,7 +523,7 @@ public void onSelected(int index) {
501523 public void onSelected (int index ) {
502524 selectedDayIndex = index ;
503525 if (onWheelListener != null ) {
504- onWheelListener .onDayWheeled (selectedDayIndex , days .get (index ));
526+ onWheelListener .onDayWheeled (selectedDayIndex , days .get (selectedDayIndex ));
505527 }
506528 }
507529 });
@@ -517,7 +539,7 @@ public void onSelected(int index) {
517539 }
518540
519541 if (timeMode != NONE ) {
520- hourView .setLayoutParams (new LinearLayout .LayoutParams (0 , WRAP_CONTENT ,1.0f ));
542+ hourView .setLayoutParams (new LinearLayout .LayoutParams (0 , WRAP_CONTENT , 1.0f ));
521543 hourView .setTextSize (textSize );
522544 hourView .setTextColor (textColorNormal , textColorFocus );
523545 hourView .setDividerConfig (dividerConfig );
@@ -546,7 +568,7 @@ public void onSelected(int index) {
546568 layout .addView (labelView );
547569 }
548570
549- minuteView .setLayoutParams (new LinearLayout .LayoutParams (0 , WRAP_CONTENT ,1.0f ));
571+ minuteView .setLayoutParams (new LinearLayout .LayoutParams (0 , WRAP_CONTENT , 1.0f ));
550572 minuteView .setTextSize (textSize );
551573 minuteView .setTextColor (textColorNormal , textColorFocus );
552574 minuteView .setDividerConfig (dividerConfig );
0 commit comments