在API 22下,DatePickerDialog的UI可能会导致信息被截断。为了解决这个问题,可以使用自定义布局来创建一个自定义的DatePickerDialog。以下是一个示例代码:
首先,在res/layout文件夹下创建一个名为custom_date_picker_dialog.xml的布局文件,内容如下:
接下来,在Java代码中创建一个自定义的DatePickerDialog。示例代码如下:
// 获取当前日期
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
// 创建一个自定义的DatePickerDialog
final DatePickerDialog datePickerDialog = new DatePickerDialog(this, null, year, month, day);
datePickerDialog.setContentView(R.layout.custom_date_picker_dialog);
// 获取DatePicker控件并设置最大日期
DatePicker datePicker = datePickerDialog.findViewById(R.id.datePicker);
datePicker.setMaxDate(calendar.getTimeInMillis());
// 设置确定按钮的点击事件
datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 处理日期选择逻辑
DatePicker datePicker = datePickerDialog.findViewById(R.id.datePicker);
int year = datePicker.getYear();
int month = datePicker.getMonth();
int day = datePicker.getDayOfMonth();
// 在此处处理日期选择的逻辑
// ...
}
});
// 显示DatePickerDialog
datePickerDialog.show();
以上代码创建了一个自定义的DatePickerDialog,使用了自定义的布局文件custom_date_picker_dialog.xml,并设置了最大日期限制。可以根据需要进行修改和调整。