Java android studio禁用日期选择器起的天数
我想禁用日期选择器 我有一个数组来存储我要禁用的日期 我有这个代码来禁用日历中的日期Java android studio禁用日期选择器起的天数,java,android,datetime,datepicker,android-calendar,Java,Android,Datetime,Datepicker,Android Calendar,我想禁用日期选择器 我有一个数组来存储我要禁用的日期 我有这个代码来禁用日历中的日期 for (Calendar loopdate = min_date_c; min_date_c.before(max_date_c); min_date_c.add(Calendar.DATE, 1), loopdate = min_date_c) { int dayOfWeek
for (Calendar loopdate = min_date_c;
min_date_c.before(max_date_c);
min_date_c.add(Calendar.DATE, 1), loopdate = min_date_c) {
int dayOfWeek = loopdate.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.FRIDAY) {
Calendar[] disabledDays = new Calendar[1];
disabledDays[0] = loopdate;
datePickerDialog.setDisabledDays(disabledDays);
}
}
我尝试了这段代码来禁用存储在arraylist中的日期,但它不起作用。它仅禁用arraylist中的第一项
ArrayList a=new ArrayList();
a.add(1); //saturday
a.add(2); //sunday
a.add(3); //monday
int day;
for(int i=0; i<a.size();i++) {
day=(Integer)a.get(i);
for (Calendar loopdate = min_date_c;
min_date_c.before(max_date_c);
min_date_c.add(Calendar.DATE, 1), loopdate = min_date_c) {
int dayOfWeek = loopdate.get(Calendar.DAY_OF_WEEK);
if (day == 1) {
System.out.println(day);
if (dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.FRIDAY) {
Calendar[] disabledDays = new Calendar[1];
disabledDays[0] = loopdate;
datePickerDialog.setDisabledDays(disabledDays);
}
}
else if (day==2) {
System.out.println(day);
if (dayOfWeek == Calendar.SUNDAY || dayOfWeek == Calendar.FRIDAY) {
Calendar[] disabledDays = new Calendar[1];
disabledDays[0] = loopdate;
datePickerDialog.setDisabledDays(disabledDays);
}
}
else if (day==3) {
System.out.println(day);
if (dayOfWeek == Calendar.MONDAY || dayOfWeek == Calendar.FRIDAY) {
Calendar[] disabledDays = new Calendar[1];
disabledDays[0] = loopdate;
datePickerDialog.setDisabledDays(disabledDays);
}
}
}
如何修复此问题?我使用此代码显示没有天数的日期选择器
DatePickerDialog datePickerDialog = new DatePickerDialog(
RacingRsActivity.this,
android.R.style.Theme_Holo_Dialog,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
dateRc.setText(DateUtil.getCalendarHeaderDate(getDateFromDatePicker(view)));
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
}
},
mYear, mMonth, mDay);
datePickerDialog.getDatePicker().findViewById(getResources().getIdentifier("day", "id", "android")).setVisibility(View.GONE);
datePickerDialog.show();
我使用这段代码来显示没有天数的日期选择器
DatePickerDialog datePickerDialog = new DatePickerDialog(
RacingRsActivity.this,
android.R.style.Theme_Holo_Dialog,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
dateRc.setText(DateUtil.getCalendarHeaderDate(getDateFromDatePicker(view)));
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
}
},
mYear, mMonth, mDay);
datePickerDialog.getDatePicker().findViewById(getResources().getIdentifier("day", "id", "android")).setVisibility(View.GONE);
datePickerDialog.show();
您可以使用“材质设计”组件更轻松有效地控制日历;它允许您通过实现界面来控制日历的每一天 特别是在你的问题,你需要禁用特定的日子;因此,您将创建一个实现CalendarConstraints.DateValidator的类,然后: 重写所需的方法,并构建一个Parcelable CalendarConstraints.DateValidator扩展了Parcelable,以便跨多个站点维护DateValidator 设备配置更改。包裹在两个包裹之间传递时会断裂 过程 重写验证每个日期的isValidlong date方法 并返回一个布尔值,该布尔值指示 日期是否有效,换句话说,如果启用或禁用/暗显日期;因此,如果一个日期是有效的,那么它将返回true,并且该日期将被用户启用以供选择。 下面,我将提供一个验证器,在2020年2月禁用星期一;你可以用同样的方式轻松地禁用任何一天 实现CalendarConstraints.DateValidator: 最后在活动/片段中构建MaterialDatePicker
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MaterialDatePicker.Builder<Long> builderRange = MaterialDatePicker.Builder.datePicker();
builderRange.setCalendarConstraints(mondayDisableConstraints().build());
builderRange.setTitleText("Select Date Range");
MaterialDatePicker<Long> pickerRange = builderRange.build();
pickerRange.show(getSupportFragmentManager(), pickerRange.toString());
}
这是输出:
希望这能帮助你,并欢迎进一步的支持 您可以使用材质设计组件更轻松有效地控制日历;它允许您通过实现界面来控制日历的每一天 特别是在你的问题,你需要禁用特定的日子;因此,您将创建一个实现CalendarConstraints.DateValidator的类,然后: 重写所需的方法,并构建一个Parcelable CalendarConstraints.DateValidator扩展了Parcelable,以便跨多个站点维护DateValidator 设备配置更改。包裹在两个包裹之间传递时会断裂 过程 重写验证每个日期的isValidlong date方法 并返回一个布尔值,该布尔值指示 日期是否有效,换句话说,如果启用或禁用/暗显日期;因此,如果一个日期是有效的,那么它将返回true,并且该日期将被用户启用以供选择。 下面,我将提供一个验证器,在2020年2月禁用星期一;你可以用同样的方式轻松地禁用任何一天 实现CalendarConstraints.DateValidator: 最后在活动/片段中构建MaterialDatePicker
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MaterialDatePicker.Builder<Long> builderRange = MaterialDatePicker.Builder.datePicker();
builderRange.setCalendarConstraints(mondayDisableConstraints().build());
builderRange.setTitleText("Select Date Range");
MaterialDatePicker<Long> pickerRange = builderRange.build();
pickerRange.show(getSupportFragmentManager(), pickerRange.toString());
}
这是输出:
希望这能帮助你,并欢迎进一步的支持 编辑以获得更好的可读性编辑以获得更好的可读性无需每天?仅选择月份和年份。否我希望我的日历有日、月、年,但禁用某些特定日期,例如星期日、星期三、星期五或我想在阵列中使用的任何其他日期无需每天?仅选择月份和年份。否我希望我的日历有日、月、,一年,但禁用一些特定的日子,例如星期天,星期三,星期五或任何其他天,我想在我的数组中HH非常感谢它真的很有用。。。非常感谢你给我你的时间…哦,非常感谢它真的很有用。。。非常感谢你给我时间。。。