【问题标题】:Android date picker date not selectingAndroid日期选择器日期未选择
【发布时间】:2020-12-14 17:16:32
【问题描述】:

我添加了一个日期选择器,一旦用户单击视图并出现日期选择器就会显示,并且用户可以在某些设备上选择日期日期选择器未正确显示并且用户无法选择日期。以下截图来自三星 J7 Android 版本 7.1.1。

我用于日期选择器的代码是这样的

public void initDatePicker(final TextView textView) {
        Calendar calendar = Calendar.getInstance();
        DatePickerDialog dialog = new DatePickerDialog(this, (view, year, month, dayOfMonth) -> {
            Date date = new Date();

            Calendar c = Calendar.getInstance();
            c.set(Calendar.YEAR, year);
            c.set(Calendar.MONTH, month);
            c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            // and get that as a Date
            Date dateSpecified = c.getTime();
            if (dateSpecified.before(date)) {
                ((TextView)findViewById(R.id.tv_date)).setTextColor(getResources().getColor(R.color.red));
                UIHelper.showShortToastInCenter(this, "Selected Date is in Past");
            } else {
                
                DateSelected = dateSpecified;
                String predate = new SimpleDateFormat("EEE,MMM d").format(c.getTime());
                String predateNew = new SimpleDateFormat("dd/MM/yyyy").format(c.getTime());
                textView.setText(predate);
                textView.setPaintFlags(Typeface.BOLD);
                dateStr = predateNew;
                
            }
        },
                calendar.get(Calendar.YEAR),
                calendar.get(Calendar.MONTH),
                calendar.get(Calendar.DAY_OF_MONTH)
        );
        Calendar min = Calendar.getInstance();
        min.set(calendar.get(Calendar.YEAR),
                calendar.get(Calendar.MONTH),
                calendar.get(Calendar.DAY_OF_MONTH));
        dialog.getDatePicker().setMinDate(min.getTimeInMillis());
        Calendar max = Calendar.getInstance();
        max.set(calendar.get(Calendar.YEAR),
                calendar.get(Calendar.MONTH),
                calendar.get(Calendar.DAY_OF_MONTH) + 30);
        dialog.getDatePicker().setMaxDate(max.getTimeInMillis());
        dialog.getDatePicker().setEnabled(true);
        dialog.show();
    }

这里是活动的主题

 <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="colorPrimary">@color/colorAccent</item>
        <item name="colorPrimaryDark">@color/colorAccent</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

【问题讨论】:

  • 您是否尝试为 colorPrimary、colorPrimaryDark 和 colorAccent 设置不同的颜色?
  • 不,但让我试试
  • 没有任何变化,仍然是 smae

标签: android datepicker android-datepicker


【解决方案1】:

我找到了解决上述问题的方法,使用基本对话框选择器我无法更改 piker 的强调色,我使用了Material Date/Time picker,它允许自定义日期和时间选择器。下面是帮助我解决问题的 sn-p

    Calendar calendar = Calendar.getInstance();
    DatePickerDialog dialog =  DatePickerDialog.newInstance(
            this::onDateSet,//Listener when user select date
            calendar.get(Calendar.YEAR), // Initial year selection
            calendar.get(Calendar.MONTH), // Initial month selection
            calendar.get(Calendar.DAY_OF_MONTH) // Initial day selection
    );
    dialog.setMinDate(calendar);
    Calendar max = Calendar.getInstance();
    max.set(calendar.get(Calendar.YEAR),
            calendar.get(Calendar.MONTH),
            calendar.get(Calendar.DAY_OF_MONTH) + 30);
    dialog.setMaxDate(max);
    dialog.setAccentColor(getResources().getColor(R.color.colorAccent));
    dialog.show(getSupportFragmentManager(),"DatePicker");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 2014-04-22
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多