Android Spinner 模式下的 DatePicker 不显示日期
Android DatePicker in spinner mode not showing date
我在微调器模式下使用 DatePicker
,并设置了最小和最大限制。然后将日期更新为最大值。 DatePickerDialog
显示时日期列没有值。当我 tap/scroll 向上或向下时,显示值。
我的布局:
<DatePicker
android:id="@+id/date_picker"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/spacing_default"
android:layout_marginRight="@dimen/spacing_default"
android:datePickerMode="spinner"
android:calendarViewShown="false" />
Java 部分:(在 onViewCreated
中)
private static final int DATE_PICKER_MONTH_OFFSET = 1;
private static final int DATE_PICKER_MIN_DATE_OFFSET_IN_MIN = 1;
datePicker.setMinDate( now().minusMinutes(
DATE_PICKER_MIN_DATE_OFFSET_IN_MIN).getMillis() );
datePicker.setMaxDate( activationDateTime.getMillis() );
datePicker.updateDate( activationDateTime.getYear(),
activationDateTime.getMonthOfYear() - DATE_PICKER_MONTH_OFFSET,
activationDateTime.getDayOfMonth() );
有问题的屏幕截图:
显示 DatePickerDialog
时还需要什么才能显示日期部分?
UPDATE/EDIT:
当设置的值与最大限制相同时,选择器似乎显示空视图。我可以通过先放置 datePicker.updateDate
然后调用 datePicker.setMaxDate
来解决问题(在启动 DatePicker
时)。 setMaxDate
将验证先前的值并正确设置。
但是现在当我将月份从 Jul 滚动到 Aug 时,我遇到了同样的问题,日视图变成空的!
任何 solution/suggestion 赞赏。
在 spinner
模式下 android 小部件 DatePicker
似乎有错误。 Google 问题跟踪器中也已经存在这样的票证:https://issuetracker.google.com/issues/64508670
很遗憾,问题跟踪器中没有解决方法或建议。
有同样的问题。就这样解决了:
datePicker.init(initYear, initMonthOfYear, initDayOfMonth,
new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Resources res = Resources.getSystem();
int id = res.getIdentifier("day", "id", "android");
NumberPicker dayPicker = datePicker.getRootView().findViewById(id);
if (dayPicker != null) {
id = res.getIdentifier("numberpicker_input", "id", "android");
TextView inputText = dayPicker.findViewById(id);
if (inputText != null && TextUtils.isEmpty(inputText.getText())) {
inputText.setText(String.valueOf(dayPicker.getValue()));
}
}
}
});
我在微调器模式下使用 DatePicker
,并设置了最小和最大限制。然后将日期更新为最大值。 DatePickerDialog
显示时日期列没有值。当我 tap/scroll 向上或向下时,显示值。
我的布局:
<DatePicker
android:id="@+id/date_picker"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/spacing_default"
android:layout_marginRight="@dimen/spacing_default"
android:datePickerMode="spinner"
android:calendarViewShown="false" />
Java 部分:(在 onViewCreated
中)
private static final int DATE_PICKER_MONTH_OFFSET = 1;
private static final int DATE_PICKER_MIN_DATE_OFFSET_IN_MIN = 1;
datePicker.setMinDate( now().minusMinutes(
DATE_PICKER_MIN_DATE_OFFSET_IN_MIN).getMillis() );
datePicker.setMaxDate( activationDateTime.getMillis() );
datePicker.updateDate( activationDateTime.getYear(),
activationDateTime.getMonthOfYear() - DATE_PICKER_MONTH_OFFSET,
activationDateTime.getDayOfMonth() );
有问题的屏幕截图:
显示 DatePickerDialog
时还需要什么才能显示日期部分?
UPDATE/EDIT:
当设置的值与最大限制相同时,选择器似乎显示空视图。我可以通过先放置 datePicker.updateDate
然后调用 datePicker.setMaxDate
来解决问题(在启动 DatePicker
时)。 setMaxDate
将验证先前的值并正确设置。
但是现在当我将月份从 Jul 滚动到 Aug 时,我遇到了同样的问题,日视图变成空的!
任何 solution/suggestion 赞赏。
在 spinner
模式下 android 小部件 DatePicker
似乎有错误。 Google 问题跟踪器中也已经存在这样的票证:https://issuetracker.google.com/issues/64508670
很遗憾,问题跟踪器中没有解决方法或建议。
有同样的问题。就这样解决了:
datePicker.init(initYear, initMonthOfYear, initDayOfMonth,
new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Resources res = Resources.getSystem();
int id = res.getIdentifier("day", "id", "android");
NumberPicker dayPicker = datePicker.getRootView().findViewById(id);
if (dayPicker != null) {
id = res.getIdentifier("numberpicker_input", "id", "android");
TextView inputText = dayPicker.findViewById(id);
if (inputText != null && TextUtils.isEmpty(inputText.getText())) {
inputText.setText(String.valueOf(dayPicker.getValue()));
}
}
}
});