【发布时间】:2020-04-05 21:03:19
【问题描述】:
基本上我是在做预约申请。所以我在列表中显示日期,当用户选择任何一天时,日期选择器会弹出并仅显示启用 3,4 周的相应日期。例如,如果我选择星期一,则启用本月的所有星期一。 7、14、21、28
【问题讨论】:
-
您需要创建自己的日期选择器或找到一些允许严格日期和应用日期范围的库
-
你可以看看here
基本上我是在做预约申请。所以我在列表中显示日期,当用户选择任何一天时,日期选择器会弹出并仅显示启用 3,4 周的相应日期。例如,如果我选择星期一,则启用本月的所有星期一。 7、14、21、28
【问题讨论】:
当你描述 onPickerListener
像这样的
DatePickerDialog.OnDateSetListener d=new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
dateAndTime.set(Calendar.YEAR, year);
dateAndTime.set(Calendar.MONTH, monthOfYear);
dateAndTime.set(Calendar.DAY_OF_MONTH, dayOfMonth);
setInitialDateTime();
}
};
在 onDateSet 中描述和处理您的特殊日子
恕我直言
【讨论】:
在此列表中传递作为选择器可接受日期的值。
Calendar now = Calendar.getInstance();
DatePickerDialog datePicker = DatePickerDialog.newInstance(
MainActivity.this,
now.get(Calendar.YEAR), // Initial year selection
now.get(Calendar.MONTH), // Initial month selection
now.get(Calendar.DAY_OF_MONTH) // Inital day selection
);
datePicker.setSelectableDays(Calendar[] days)
【讨论】:
昨天,我发布了一个问题,询问 如何在 DatePicker Android 中仅启用特定日期。就像每当用户单击特定日期时,DatePicker 中只会提供相应的日期?。我已经解决了,在这里分享一下:
这里是当用户点击星期一然后 DatePicker 弹出并仅启用当天星期一的屏幕截图。
code
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Day day = days.get(position);
switch (day.getDay()){
case "Monday":
appDay = 2;
break;
case "Tuesday":
appDay = 3;
break;
case "Wednesday":
appDay = 4;
break;
case "Thursday":
appDay = 5;
break;
case "Friday":
appDay = 6;
break;
case "Saturday":
appDay = 7;
break;
case "Sunday":
appDay = 1;
break;
default:
appDay = 0;
break;
}
datePickerDialog = DatePickerDialog.newInstance(DayListFragment.this,Year, Month, Day);
datePickerDialog.setThemeDark(false);
datePickerDialog.setTitle("Select Appointment Date");
Calendar calendar1 = Calendar.getInstance();
int today = calendar1.get(Calendar.DAY_OF_WEEK);
if ( appDay == today)
{
int update = 0;
for (int i = 0; i < calendars.length; i++)
{
final Calendar calendar2 = Calendar.getInstance();
calendar2.get(Calendar.DAY_OF_WEEK);
calendar2.add(Calendar.DATE, update);
calendars[i] = calendar2;
update += 7;
}
}
else if ( appDay > today)
{
int for1 = appDay - today;
for (int i = 0; i < calendars.length; i++)
{
final Calendar calendar2 = Calendar.getInstance();
calendar2.get(Calendar.DAY_OF_WEEK);
calendar2.add(Calendar.DATE, for1);
calendars[i] = calendar2;
for1 += 7;
}
}
else if ( appDay < today)
{
int for2 = (7-today)+appDay;
for (int i = 0; i < calendars.length; i++)
{
final Calendar calendar2 = Calendar.getInstance();
calendar2.get(Calendar.DAY_OF_WEEK);
calendar2.add(Calendar.DATE, for2);
calendars[i] = calendar2;
for2 += 7;
}
}
datePickerDialog.setSelectableDays(calendars);
datePickerDialog.show(getFragmentManager(),"DatePickerDialog");
}
【讨论】:
datePickerDialog.setSelectableDays(calendars),其余代码无法回答问题。问题是原生DatePickerDialog 没有这样的方法。可能,你使用了一些库,你应该提到这一点。