2016-12-13 7 views
-2

Что мне нужно в моем проекте - это DatePickerFragment с выбором года и месяца. Я реализовал, но он не работает в версии «Lollipop». У меня есть полный календарь, который мне не нужен.Android Datepicker без календаря для истечения срока действия карты и выбора yesr

Я обнаружил, что добавив тег datepicker с android: 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 
    } 
} 

Что мне нужно для всех версий дается на скриншоте ниже

Requirement

ответ

0

Попробуйте следующий код ...

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 change to only Month and Year

+0

Спасибо, он удаляет дату из сборщика. Но мне нужно работать и на версии с леденец, там у меня есть полный календарь. – Ajith

+0

Но в версии lollipop он показывает полный календарь, можем ли мы получить то же самое в леденец? – Ajith