【发布时间】:2021-02-10 18:47:17
【问题描述】:
我正在尝试将日期选择器样式更改为一个日期选择器的微调器,其他日期选择器应保持默认。
我试过了:
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
private int style;
DatePickerFragment(int xml) {
style = xml;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar c = Calendar.getInstance();
final DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), this, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
LayoutInflater inflater = requireActivity().getLayoutInflater();
datePickerDialog.setView(inflater.inflate(style, null));
return datePickerDialog;
}
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
Log.i("DatePicker", "received date from picker: " + day + "." + month + "." + year);
}
}
使用 XML 样式:
<?xml version="1.0" encoding="utf-8"?>
<DatePicker xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/datePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:datePickerMode="spinner"
android:calendarViewShown="false" />
但每当我在微调器中输入日期并点击确定时,当前(今天)日期会记录在 onDateSet 方法中,而不是日期选择器中选择的日期。
我还尝试使用以下命令覆盖 OK 按钮:
datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "asd", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Log.i("DatePicker", "received date from picker2: " + datePickerDialog.getDatePicker().getDayOfMonth() + "." + datePickerDialog.getDatePicker().getMonth()+1 + "." + datePickerDialog.getDatePicker().getYear());
}
});
但没有变化。
根据我的理解和行为,我正在使用 inflater.inflate(style, null) 创建一些覆盖,在其中选择日期,但未填充覆盖值。
如何使用充气器更改日期选择器样式?
注意...我不能:
- 更改样式,因为我还需要“常规”日期选择器。
- 使用新的 Activity,我想坚持使用 Fragments。
谢谢!
【问题讨论】:
标签: java android datepicker