Java 在android中禁用日历视图中的每个星期日
如何在下面的代码中仅禁用星期天? 我们找不到任何解决方案来禁用sunday一个月 MainActivity.java:Java 在android中禁用日历视图中的每个星期日,java,android,android-calendar,Java,Android,Android Calendar,如何在下面的代码中仅禁用星期天? 我们找不到任何解决方案来禁用sunday一个月 MainActivity.java: CalendarView calendarView = (CalendarView) findViewById(R.id.calendarView); Calendar calendar = Calendar.getInstance(); calendarView.setMinDate(calendar.getTimeInMillis()); calendarView.setO
CalendarView calendarView = (CalendarView) findViewById(R.id.calendarView);
Calendar calendar = Calendar.getInstance();
calendarView.setMinDate(calendar.getTimeInMillis());
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener()
{
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
Toast.makeText(getApplicationContext(), "" + dayOfMonth, 0).show();// TODO Auto-generated method stub`enter code here`
}
});
我在一个项目中使用了这个代码。看看它是否能产生理想的结果-
//Global Variables
private Calendar lastSelectedCalendar = null;
private CalendarView calendarView;
//
calendarView = (CalendarView) findViewById(R.id.calendarView);
lastSelectedCalendar = Calendar.getInstance();
calendarView.setMinDate(lastSelectedCalendar.getTimeInMillis() - 1000);
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
Calendar checkCalendar = Calendar.getInstance();
checkCalendar.set(year, month, dayOfMonth);
if(checkCalendar.equals(lastSelectedCalendar))
return;
if(checkCalendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
calendarView.setDate(lastSelectedCalendar.getTimeInMillis());
else
lastSelectedCalendar = checkCalendar;
}
});
日历周日;
列表周末=新建ArrayList();
整数周=5;
对于(整数i=0;i<(周*7);i=i+7){
sunday=Calendar.getInstance();
sunday.add(Calendar.DAY/u年,(Calendar.sunday-sunday.get(Calendar.DAY/u周)+7+i));
//星期六=Calendar.getInstance();
//星期六。添加(Calendar.DAY\u OF_YEAR,(Calendar.saturday-saturday.get(Calendar.DAY\u OF_WEEK)+i));
//周末。添加(星期六);
周末。添加(星期日);
}
日历[]disabledDays=weekends.toArray(新日历[weekends.size()]);
dpd.setDisabledDays(disabledDays);
此代码将禁用接下来的5个星期天,如果您希望在更长时间内执行此操作,只需修改week即可。如果您也希望禁用星期六,只需取消对这些行的注释即可
如果要在前5个星期天执行此操作,只需将for循环修改为:
for(int i=0;i<(周*7);i=i+7){
对于(int j=0;j>(周*7);j=j-7);
sunday=Calendar.getInstance();
sunday.add(Calendar.DAY/u年,(Calendar.sunday-sunday.get(Calendar.DAY/u周)+7+i));
//星期六=Calendar.getInstance();
//星期六。添加(Calendar.DAY\u OF_YEAR,(Calendar.saturday-saturday.get(Calendar.DAY\u OF_WEEK)+i));
//周末。添加(星期六);
周末。添加(星期日);
}
AFAIK这在内置的CalendarView
中是不可能的。你必须创建一个。或者您可以使用日历库。如何使用日历库禁用Sunday和其他疑问。。。如何在周日让残疾人淡出舞台@Subrata M如何禁用某些天?
Calendar sunday;
List<Calendar> weekends = new ArrayList<>();
int weeks = 5;
for (int i = 0; i < (weeks * 7) ; i = i + 7) {
sunday = Calendar.getInstance();
sunday.add(Calendar.DAY_OF_YEAR, (Calendar.SUNDAY - sunday.get(Calendar.DAY_OF_WEEK) + 7 + i));
// saturday = Calendar.getInstance();
// saturday.add(Calendar.DAY_OF_YEAR, (Calendar.SATURDAY - saturday.get(Calendar.DAY_OF_WEEK) + i));
// weekends.add(saturday);
weekends.add(sunday);
}
Calendar[] disabledDays = weekends.toArray(new Calendar[weekends.size()]);
dpd.setDisabledDays(disabledDays);
for (int i = 0; i < (weeks * 7); i = i + 7) {
for(int j =0; j > (weeks*7) ; j = j - 7);
sunday = Calendar.getInstance();
sunday.add(Calendar.DAY_OF_YEAR, (Calendar.SUNDAY - sunday.get(Calendar.DAY_OF_WEEK) + 7 + i));
// saturday = Calendar.getInstance();
// saturday.add(Calendar.DAY_OF_YEAR, (Calendar.SATURDAY - saturday.get(Calendar.DAY_OF_WEEK) + i));
// weekends.add(saturday);
weekends.add(sunday);
}