Skip to content

Commit 7e39ad6

Browse files
committed
日期时间选择器支持设置各项平分布局
1 parent 2a84f0a commit 7e39ad6

1 file changed

Lines changed: 30 additions & 8 deletions

File tree

library/WheelPicker/src/main/java/cn/qqtheme/framework/picker/DateTimePicker.java

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
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

Comments
 (0)