Android DatePicker在微调器模式下不显示日期
我在微调器模式下使用Android DatePicker在微调器模式下不显示日期,android,datepicker,android-datepicker,Android,Datepicker,Android Datepicker,我在微调器模式下使用DatePicker,并设置最小和最大限制。然后将日期更新为最大值。显示DatePickerDialog时,日期列没有值。当我点击/向上或向下滚动时,会显示值 MyLayout: <DatePicker android:id="@+id/date_picker" android:layout_width="match_parent" android:layo
DatePicker
,并设置最小和最大限制。然后将日期更新为最大值。显示DatePickerDialog
时,日期列没有值。当我点击/向上或向下滚动时,会显示值
MyLayout:
<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" />
有问题的屏幕截图:
当显示DatePickerDialog
时,还需要什么来显示日期部分
更新/编辑:
当值集与最大限制相同时,选择器似乎显示空视图。我可以通过先放置DatePicker.updateDate
,然后调用DatePicker.setMaxDate
来解决这个问题(在启动DatePicker
时)。setMaxDate
将验证以前的值并正确设置。
但是现在我面临同样的问题,当我滚动从七月到八月的月份时,日视图变成空的
欢迎提供任何解决方案/建议。在
spinner
模式下,android小部件DatePicker
中似乎存在漏洞。Google issue tracker中已经存在这样一张罚单:
不幸的是,问题追踪器中没有可用的解决方法或建议。也有相同的问题。这样解决:
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()));
}
}
}
});
为什么要使用
now().minusMinutes(DATE\u PICKER\u MIN\u DATE\u OFFSET\u IN\u MIN).getMillis()代码>(now()
)并且在较旧的时间之后,肯定比现在少,因此这可能会产生错误。如果你花时间,应用程序需要超过一分钟,它们就会崩溃。我建议您使用activationDateTime
而不是now()
我需要从系统日期到激活日期的微调器。这就是为什么要使用now()
。最小值没有任何问题。当最大值更新为min
值中的DatePicker
的当前值时,就会出现问题?和activationDateTime
相比now()
是的,activationDateTime
是未来的,它设置为最大值。同时更新与当前日期相同的日期,以显示picker何时启动。@VishnuSP我认为当您将月份设置为8月时,它超出了picker的最大限制。您的最大日期是什么?
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()));
}
}
}
});