android - Android DatePickerDialog Max Date 视觉错误
问题描述
我在 Android 小部件的新 DatePickerDialog 上遇到了一个奇怪的视觉错误。我需要将对话框的可选日期范围设置为 1 个月,但它也不应该选择未来的日期。逻辑按预期工作,但视觉效果有某种错误。这是它的外观:
请注意,“5”已禁用,我无法选择它。但是,它看起来是可选的。我应该怎么做才能解决这个问题?任何帮助表示赞赏,谢谢。(今天也是 5 号,我假设这个错误来自那里。)
编辑:这就是我创建对话框的方式。
@SuppressLint("ValidFragment")
public static class DateDialog extends DialogFragment implements DatePickerDialog.OnDateSetListener
{
private static final long MONTH = 2592000000L;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
// Use previous selected date in the date picker
final Calendar c = Calendar.getInstance();
c.setTimeInMillis(DateUtils.getAtTimeTimestamp(startDate));
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(getActivity(), R.style.AppTheme_DialogTheme, this, year, month, day);
Date date = new Date(); // get current time
// get target maximum date which can be 1 month above
long targetDateTime = DateUtils.getAtTimeTimestamp(startDate) + MONTH;
if (date.getTime() < targetDateTime)
dialog.getDatePicker().setMaxDate(date.getTime()); // now because it can't be future
else
dialog.getDatePicker().setMaxDate(targetDateTime); // should also be one month above from the start date.
dialog.getDatePicker().setMinDate(DateUtils.getAtTimeTimestamp(startDate));
return dialog;
}
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2)
{
// logic between date selections
}
}
DateUtils.getAtTimeTimestamp(String date) 基本上将字符串转换为以毫秒为单位的长整数。
解决方案
推荐阅读
- javascript - 我们需要识别我们正在使用的数据吗?
- alsa - aplay 管道使用文件而不是标准输入和标准输出来记录
- javascript - 如何在对象方法中省略 let/var 得到警告?
- git - 现有的 git repo 不再被识别为有效的存储库
- batch-file - 使用扫描所有端口的paping.exe批量端口扫描工具
- java - dependency injection (CDI) in java EE 8
- node.js - 在 Dialogflow 响应中显示 BasicCard
- c# - 通过 asp.net 连接到 mysql 数据库
- python - 为什么 pytest-qt 找不到 Python 3.4 的 PyQt?
- javascript - document.body.appendChild(scriptElement) 之后功能不可用