我在项目中需要的是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更改为一个月和年