Android DatePicker无日历,可用于卡期到期月和年度选择



我在项目中需要的是datepickerfragment,其中包括年度和月份的选择。我已经实现了,但它在" Lollipop"版本中没有起作用。我到达那里的是完整的日历,我不需要。

我发现,通过使用android添加datepicker标签:calendarviewshown =" false"Android:datePickermode =" Spinner"以显示所有版本中没有日历的日期选择器。但是我需要的是datepicker片段中的相同。

我实施的代码在下面给出

主要活动

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    findViewById(R.id.btn1).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            //showDatePicker();
            DatePickerFragment date = new DatePickerFragment();
            date.show(getSupportFragmentManager(), "Date Picker");
        }
    });
}

片段代码如下

public class DatePickerFragment extends DialogFragment
        implements DatePickerDialog.OnDateSetListener {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);
        return new DatePickerDialog(getActivity(), this, year, month, day);

    }
    public void onDateSet(DatePicker view, int year, int month, int day) {
        // Do something with the date chosen by the user
    }
}

我需要的所有版本都在下面的屏幕截图中给出

[![需求] [2]] [2]

尝试以下代码...

private DatePickerDialog createDialogWithoutDateField() {
    DatePickerDialog dpd = new DatePickerDialog(this, null, 2014, 1, 24);
    try {
        java.lang.reflect.Field[] datePickerDialogFields = dpd.getClass().getDeclaredFields();
        for (java.lang.reflect.Field datePickerDialogField : datePickerDialogFields) {
            if (datePickerDialogField.getName().equals("mDatePicker")) {
                datePickerDialogField.setAccessible(true);
                DatePicker datePicker = (DatePicker) datePickerDialogField.get(dpd);
                java.lang.reflect.Field[] datePickerFields = datePickerDialogField.getType().getDeclaredFields();
                for (java.lang.reflect.Field datePickerField : datePickerFields) {
                    Log.i("test", datePickerField.getName());
                    if ("mDaySpinner".equals(datePickerField.getName())) {
                        datePickerField.setAccessible(true);
                        Object dayPicker = datePickerField.get(datePicker);
                        ((View) dayPicker).setVisibility(View.GONE);
                    }
                }
            }
        }
    } 
    catch (Exception ex) {
    }
    return dpd;
}

并使用以下代码称其为...

createDialogWithoutDateField().show();

参考以下链接... Android DatePicker更改为一个月和年

最新更新