Android 有什么函数可以让我将日历滚动到设置的日期吗?
Android Is there function I can call to scroll the calendar to the set date?
Calendar calendar = Calendar.getInstance();
MaterialDatePicker.Builder<Long> builder = MaterialDatePicker.Builder.datePicker();
builder.setTitleText(R.string.title_pick_a_date);
if (dateDF == null) {
builder.setSelection(calendar.getInstance().getTimeInMillis());
} else {
String date = dateDF.toString();
calendar.setTime(dateDF);
builder.setSelection(calendar.getTimeInMillis());
}
MaterialDatePicker<Long> picker = builder.build();
picker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Long>
() {
@Override
public void onPositiveButtonClick(Long selection) {
calendar.setTimeInMillis(selection);
calendar.setTimeZone(calendar.getTimeZone());
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
int month = calendar.get(Calendar.MONTH);
int year = calendar.get(Calendar.YEAR);
String dateSF = dayOfMonth + "/" + (month + 1) + "/" + year;
calendar.set(year, month, dayOfMonth);
Date date = calendar.getTime();
String a = "a";
binding.layoutContentFeedFormulaDetails.tIeDate.setText(dateSF);
binding.layoutContentFeedFormulaDetails.tIeDate.setTag(calendar.getTime());
}
});
binding.layoutContentFeedFormulaDetails.btnDatePicker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
picker.show(getSupportFragmentManager(), picker.toString());
}
});
嗨,
我正在构建的 android 应用程序中使用 android MaterialDatePicker。
上面的代码工作得很好。但是,例如,我将日期设置为 26/08/2018 并打开 materialDatePicker 对话框,日历滚动到当前日期而不是设置日期。我希望日历在打开对话框时自动滚动到设置的日期。我疯狂地在互联网上四处寻找,找不到答案。请帮我!
非常感谢。
对不起!这是我关于 Stack overflow 的第一个问题。我希望我没有违反它的任何准则。
他们说崛起和闪耀。今天早上,我很高兴地通知任何读到这篇文章的人,我找到了解决这个问题的方法。我希望这对某人有所帮助。
- 创建约束生成器。
CalendarConstraints.Builder calendarConstraintsBuilder = new CalendarConstraints.Builder();
- 从日历实例中获取时间(以毫秒为单位)。
long openAt = calendar.getTimeInMillis();
- 将 openAt 设置为以毫秒为单位获取时间的日历约束生成器。
calendarConstraintsBuilder.setOpenAt(openAt);
- 最终将 calendarConstraintsBuilder.constraints 设置为 MaterialDatePicker.Builder 实例。
builder.setCalendarConstraints(calendarConstraintsBuilder.build());
我知道通过查看 setOpenAt(long month) 的定义,它再次误导人们通过查看 public Builder setOpenAt(long month) 再次将月份作为参数传递).但是阅读代码文档可以帮助您了解需要传递的时间(以毫秒为单位)。 整个代码如下。
MaterialDatePicker.Builder<Long> builder = MaterialDatePicker.Builder.datePicker();
CalendarConstraints.Builder calendarConstraintsBuilder = new CalendarConstraints.Builder();
builder.setTitleText(R.string.title_pick_a_date);
if (dateDF == null) {
builder.setSelection(Calendar.getInstance().getTimeInMillis());
} else {
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateDF);
long openAt = calendar.getTimeInMillis();
calendarConstraintsBuilder.setOpenAt(openAt);
builder.setCalendarConstraints(calendarConstraintsBuilder.build());
builder.setSelection(calendar.getTimeInMillis());
}
MaterialDatePicker<Long> picker = builder.build();
picker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Long>() {
@Override
public void onPositiveButtonClick(Long selection) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(selection);
calendar.setTimeZone(calendar.getTimeZone());
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
int month = calendar.get(Calendar.MONTH);
int year = calendar.get(Calendar.YEAR);
String dateSF = dayOfMonth + "/" + (month + 1) + "/" + year;
calendar.set(year, month, dayOfMonth);
binding.layoutContentFeedFormulaDetails.tIeDate.setText(dateSF);
binding.layoutContentFeedFormulaDetails.tIeDate.setTag(calendar.getTime());
}
});
binding.layoutContentFeedFormulaDetails.btnDatePicker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
picker.show(getSupportFragmentManager(), picker.toString());
}
});
Calendar calendar = Calendar.getInstance();
MaterialDatePicker.Builder<Long> builder = MaterialDatePicker.Builder.datePicker();
builder.setTitleText(R.string.title_pick_a_date);
if (dateDF == null) {
builder.setSelection(calendar.getInstance().getTimeInMillis());
} else {
String date = dateDF.toString();
calendar.setTime(dateDF);
builder.setSelection(calendar.getTimeInMillis());
}
MaterialDatePicker<Long> picker = builder.build();
picker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Long>
() {
@Override
public void onPositiveButtonClick(Long selection) {
calendar.setTimeInMillis(selection);
calendar.setTimeZone(calendar.getTimeZone());
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
int month = calendar.get(Calendar.MONTH);
int year = calendar.get(Calendar.YEAR);
String dateSF = dayOfMonth + "/" + (month + 1) + "/" + year;
calendar.set(year, month, dayOfMonth);
Date date = calendar.getTime();
String a = "a";
binding.layoutContentFeedFormulaDetails.tIeDate.setText(dateSF);
binding.layoutContentFeedFormulaDetails.tIeDate.setTag(calendar.getTime());
}
});
binding.layoutContentFeedFormulaDetails.btnDatePicker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
picker.show(getSupportFragmentManager(), picker.toString());
}
});
嗨,
我正在构建的 android 应用程序中使用 android MaterialDatePicker。
上面的代码工作得很好。但是,例如,我将日期设置为 26/08/2018 并打开 materialDatePicker 对话框,日历滚动到当前日期而不是设置日期。我希望日历在打开对话框时自动滚动到设置的日期。我疯狂地在互联网上四处寻找,找不到答案。请帮我!
非常感谢。
对不起!这是我关于 Stack overflow 的第一个问题。我希望我没有违反它的任何准则。
他们说崛起和闪耀。今天早上,我很高兴地通知任何读到这篇文章的人,我找到了解决这个问题的方法。我希望这对某人有所帮助。
- 创建约束生成器。
CalendarConstraints.Builder calendarConstraintsBuilder = new CalendarConstraints.Builder();
- 从日历实例中获取时间(以毫秒为单位)。
long openAt = calendar.getTimeInMillis();
- 将 openAt 设置为以毫秒为单位获取时间的日历约束生成器。
calendarConstraintsBuilder.setOpenAt(openAt);
- 最终将 calendarConstraintsBuilder.constraints 设置为 MaterialDatePicker.Builder 实例。
builder.setCalendarConstraints(calendarConstraintsBuilder.build());
我知道通过查看 setOpenAt(long month) 的定义,它再次误导人们通过查看 public Builder setOpenAt(long month) 再次将月份作为参数传递).但是阅读代码文档可以帮助您了解需要传递的时间(以毫秒为单位)。 整个代码如下。
MaterialDatePicker.Builder<Long> builder = MaterialDatePicker.Builder.datePicker();
CalendarConstraints.Builder calendarConstraintsBuilder = new CalendarConstraints.Builder();
builder.setTitleText(R.string.title_pick_a_date);
if (dateDF == null) {
builder.setSelection(Calendar.getInstance().getTimeInMillis());
} else {
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateDF);
long openAt = calendar.getTimeInMillis();
calendarConstraintsBuilder.setOpenAt(openAt);
builder.setCalendarConstraints(calendarConstraintsBuilder.build());
builder.setSelection(calendar.getTimeInMillis());
}
MaterialDatePicker<Long> picker = builder.build();
picker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Long>() {
@Override
public void onPositiveButtonClick(Long selection) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(selection);
calendar.setTimeZone(calendar.getTimeZone());
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
int month = calendar.get(Calendar.MONTH);
int year = calendar.get(Calendar.YEAR);
String dateSF = dayOfMonth + "/" + (month + 1) + "/" + year;
calendar.set(year, month, dayOfMonth);
binding.layoutContentFeedFormulaDetails.tIeDate.setText(dateSF);
binding.layoutContentFeedFormulaDetails.tIeDate.setTag(calendar.getTime());
}
});
binding.layoutContentFeedFormulaDetails.btnDatePicker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
picker.show(getSupportFragmentManager(), picker.toString());
}
});