为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Android日期选择器中禁用过去的日期?

/ 猿问

如何在Android日期选择器中禁用过去的日期?

慕桂英546537 2019-12-27 15:14:08

如何在Android日期选择器中禁用过去的日期?


这是产生我的DatePicker的代码:


@Override

protected Dialog onCreateDialog(int id) {

    switch (id) {

    case DATE_DIALOG_ID:

        // set date picker as current date

        return new DatePickerDialog(this, datePickerListener, year, month,

                day);

    }

    return null;

}


private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {

    public void onDateSet(DatePicker view, int selectedYear,

            int selectedMonth, int selectedDay) {

        year = selectedYear;

        month = selectedMonth+1;

        day = selectedDay;


        startdate.setText(new StringBuilder().append(day).append("-")

                .append(getMonth(month + 1)).append("-").append(year)

                .append(" "));

    }

};


查看完整描述

3 回答

?
富国沪深

你可以做


datePicker.setMinDate(System.currentTimeMillis() - 1000);

它将今天的日期设置为最短日期,所有过去的日期都被禁用。


datePicker是一个对象,DatePicker如果您正在使用的对象DatePickerDialog可以


datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);

注意:setMinDate是API 11中引入的


查看完整回答
反对 回复 2019-12-27
?
四季花海

此方法将正常工作。


//Get yesterday's date

Calendar calendar = Calendar.getInstance();

calendar.add(Calendar.DATE, -1);


//Set yesterday time milliseconds as date pickers minimum date

DatePickerDialog datePickerDialog = new DatePickerDialog(context, myDateListener, year, month, day);

datePickerDialog.getDatePicker().setMinDate(calendar.getTimeInMillis());

datePickerDialog.show();


查看完整回答
反对 回复 2019-12-27
?
达令说

这是我的方法:


public class DatePickerFragment extends DialogFragment {

OnDateSetListener ondateSet;

Calendar c;

int year = 0, month = 0, day = 0;


public DatePickerFragment() {

}


public void setCallBack(OnDateSetListener ondate) {

    ondateSet = ondate;

}


public static DatePickerFragment newInstance(Bundle bundle) {

    DatePickerFragment myFragment = new DatePickerFragment();

    myFragment.setArguments(bundle);

    return myFragment;

}


@Override

public Dialog onCreateDialog(Bundle savedInstanceState) {

    // final Calendar c = Calendar.getInstance();

//if else for null arguments

    if (getArguments() != null) {

        year = getArguments().getInt("year");

        month = getArguments().getInt("month");

        day = getArguments().getInt("day");

        c = Calendar.getInstance();

        c.set(year, month, day);


    } else {

        c = Calendar.getInstance();

        year = c.get(Calendar.YEAR);

        month = c.get(Calendar.MONTH);

        day = c.get(Calendar.DAY_OF_MONTH);

        Log.d("else", "else");

    }



    DatePickerDialog picker = new DatePickerDialog(getActivity(),

            ondateSet, year, month, day);

    picker.getDatePicker().setMinDate(c.getTime().getTime());

    Log.d("picker timestamp", c.getTime().getTime() + "");

    return picker;

}

}

这是实例化选择器的方式:


Bundle bundle = new Bundle();

        Calendar c = Calendar.getInstance();

        bundle.putInt("year", c.get(Calendar.YEAR));

        bundle.putInt("month", c.get(Calendar.MONTH));

        bundle.putInt("day", c.get(Calendar.DAY_OF_MONTH));

        DatePickerFragment fragment = DatePickerFragment

                .newInstance(bundle);

        fragment.setCallBack(dateSet);

        fragment.show(getActivity().getSupportFragmentManager(), null);

这是我的实现随时更改它。请注意,默认情况下,此代码将mindate设置为当前日期。同样,newInstance很重要。


查看完整回答
反对 回复 2019-12-27

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信