summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andrei Stingaceanu <stg@google.com> 2017-06-14 19:35:55 +0000
committer android-build-merger <android-build-merger@google.com> 2017-06-14 19:35:55 +0000
commit02dba53fe7e3957fd035bb1083048915a50240bf (patch)
treeff70f599a981030df006a735d1b2d9cfff636e0d
parent0c8607489581f5bd3f97589a65ec216e62d6ca4b (diff)
parent852f4b1fa72bc2e44213107845db52a42bdcd0fb (diff)
Merge "DayPickerView - clamp date to min/max" into oc-dev am: 511c95a022 am: 37aa78bfab
am: 852f4b1fa7 Change-Id: I317b1c2891426225863711e4815a470d1902a9a2
-rw-r--r--core/java/android/widget/DayPickerView.java19
1 files changed, 11 insertions, 8 deletions
diff --git a/core/java/android/widget/DayPickerView.java b/core/java/android/widget/DayPickerView.java
index 1e8207a2e7b3..f712d5fa65ca 100644
--- a/core/java/android/widget/DayPickerView.java
+++ b/core/java/android/widget/DayPickerView.java
@@ -293,9 +293,19 @@ class DayPickerView extends ViewGroup {
* @param setSelected whether to set the specified day as selected
*/
private void setDate(long timeInMillis, boolean animate, boolean setSelected) {
+ boolean dateClamped = false;
+ // Clamp the target day in milliseconds to the min or max if outside the range.
+ if (timeInMillis < mMinDate.getTimeInMillis()) {
+ timeInMillis = mMinDate.getTimeInMillis();
+ dateClamped = true;
+ } else if (timeInMillis > mMaxDate.getTimeInMillis()) {
+ timeInMillis = mMaxDate.getTimeInMillis();
+ dateClamped = true;
+ }
+
getTempCalendarForTime(timeInMillis);
- if (setSelected) {
+ if (setSelected || dateClamped) {
mSelectedDay.setTimeInMillis(timeInMillis);
}
@@ -353,13 +363,6 @@ class DayPickerView extends ViewGroup {
public void onRangeChanged() {
mAdapter.setRange(mMinDate, mMaxDate);
- // Clamp the selected day to the new min/max.
- if (mSelectedDay.before(mMinDate)) {
- mSelectedDay.setTimeInMillis(mMinDate.getTimeInMillis());
- } else if (mSelectedDay.after(mMaxDate)) {
- mSelectedDay.setTimeInMillis(mMaxDate.getTimeInMillis());
- }
-
// Changing the min/max date changes the selection position since we
// don't really have stable IDs. Jumps immediately to the new position.
setDate(mSelectedDay.getTimeInMillis(), false, false);