Я добавил setMinDate (1 декабря 2015 г.) и setMaxDate (текущий месяц, последний день) для просмотра календаря, при переходе от минимальной даты к максимальной дате отображается предыдущий месяц (по умолчанию отображается декабрь, когда я прокручиваю до минимальной даты из максимальная дата, затем минимальная дата до максимальной даты, наконец, отображается ноябрь). и как удалить нецелевые дни месяца из календаря, может ли кто-нибудь предложить мне
Вот мой код
public void showCalendar() {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(ctx);
LayoutInflater inflater = ((Activity) ctx).getLayoutInflater();
final View dialogView = inflater.inflate(R.layout.calendar_view_layout,
null);
CalendarView calendar = (CalendarView) dialogView
.findViewById(R.id.calendarView);
Button cancelBtn = (Button) dialogView.findViewById(R.id.cancel);
Button okBtn = (Button) dialogView.findViewById(R.id.ok);
// sets whether to show the week number.
calendar.setShowWeekNumber(false);
// sets the first day of week according to Calendar.
// here we set Monday as the first day of the Calendar
calendar.setFirstDayOfWeek(2);
calendar.setBackgroundColor(Color.WHITE);
calendar.setFocusedMonthDateColor(Color.BLACK);
/* calendar.setMinDate(); */
calendar.setMaxDate(System.currentTimeMillis());
// The background color for the selected week.
calendar.setSelectedWeekBackgroundColor(Color.TRANSPARENT);
// sets the color for the dates of an unfocused month.
calendar.setUnfocusedMonthDateColor(Color.BLACK);
// sets the color for the separator line between weeks.
calendar.setWeekSeparatorLineColor(getResources().getColor(
R.color.transparent));
// sets the color for the vertical bar shown at the beginning and at the
// end of the selected date.
// calendar.setSelectedDateVerticalBar(Color.GREEN);
// sets the listener to be notified upon selected date change.
calendar.setOnDateChangeListener(new OnDateChangeListener() {
// show the selected date as a toast
@Override
public void onSelectedDayChange(CalendarView view, int year,
int month, int day) {
currentMonth = month;
currentDay = day;
currentYear = year;
/*
* Toast.makeText(getActivity(), day + "/" + (month + 1) + "/" +
* year, Toast.LENGTH_LONG) .show();
*/
}
});
getCurrentMonth(calendar);
dialogBuilder.setView(dialogView);
final AlertDialog b = dialogBuilder.create();
b.getWindow().setBackgroundDrawable(
new ColorDrawable(android.graphics.Color.TRANSPARENT));
b.show();
}
void getCurrentMonth(CalendarView calendarView) {
Date today = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(today);
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.add(Calendar.DATE, -1);
Date lastDayOfMonth = calendar.getTime();
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
long maxDate = lastDayOfMonth.getTime();
calendarView.setMaxDate(maxDate);
String[] monthLastDay = sdf.format(lastDayOfMonth).split("-");
int year = Integer.parseInt(monthLastDay[0]) - 1;
String lastYearFirstDate = year + "-" + monthLastDay[1] + "-" + 01;
try {
long minDate = sdf.parse(lastYearFirstDate).getTime();
calendarView.setMinDate(minDate);
} catch (ParseException e) {
e.printStackTrace();
}
}