Merge "Show CJK dates as all-numeric in the DatePicker."
This commit is contained in:
@@ -39,6 +39,7 @@ import android.widget.NumberPicker.OnValueChangeListener;
|
|||||||
|
|
||||||
import com.android.internal.R;
|
import com.android.internal.R;
|
||||||
|
|
||||||
|
import java.text.DateFormatSymbols;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -480,12 +481,25 @@ public class DatePicker extends FrameLayout {
|
|||||||
mCurrentDate = getCalendarForLocale(mCurrentDate, locale);
|
mCurrentDate = getCalendarForLocale(mCurrentDate, locale);
|
||||||
|
|
||||||
mNumberOfMonths = mTempDate.getActualMaximum(Calendar.MONTH) + 1;
|
mNumberOfMonths = mTempDate.getActualMaximum(Calendar.MONTH) + 1;
|
||||||
|
mShortMonths = new DateFormatSymbols().getShortMonths();
|
||||||
|
|
||||||
|
if (usingNumericMonths()) {
|
||||||
|
// We're in a locale where a date should either be all-numeric, or all-text.
|
||||||
|
// All-text would require custom NumberPicker formatters for day and year.
|
||||||
mShortMonths = new String[mNumberOfMonths];
|
mShortMonths = new String[mNumberOfMonths];
|
||||||
for (int i = 0; i < mNumberOfMonths; i++) {
|
for (int i = 0; i < mNumberOfMonths; ++i) {
|
||||||
mShortMonths[i] = DateUtils.getMonthString(Calendar.JANUARY + i,
|
mShortMonths[i] = String.format("%d", i + 1);
|
||||||
DateUtils.LENGTH_MEDIUM);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests whether the current locale is one where there are no real month names,
|
||||||
|
* such as Chinese, Japanese, or Korean locales.
|
||||||
|
*/
|
||||||
|
private boolean usingNumericMonths() {
|
||||||
|
return Character.isDigit(mShortMonths[Calendar.JANUARY].charAt(0));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a calendar for locale bootstrapped with the value of a given calendar.
|
* Gets a calendar for locale bootstrapped with the value of a given calendar.
|
||||||
@@ -667,7 +681,7 @@ public class DatePicker extends FrameLayout {
|
|||||||
mMonthSpinner.setValue(mCurrentDate.get(Calendar.MONTH));
|
mMonthSpinner.setValue(mCurrentDate.get(Calendar.MONTH));
|
||||||
mDaySpinner.setValue(mCurrentDate.get(Calendar.DAY_OF_MONTH));
|
mDaySpinner.setValue(mCurrentDate.get(Calendar.DAY_OF_MONTH));
|
||||||
|
|
||||||
if (Character.isDigit(displayedValues[0].charAt(0))) {
|
if (usingNumericMonths()) {
|
||||||
mMonthSpinnerInput.setRawInputType(InputType.TYPE_CLASS_NUMBER);
|
mMonthSpinnerInput.setRawInputType(InputType.TYPE_CLASS_NUMBER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user