2014-11-08 99 views
0

如何从datepicker对话框android隐藏特定的日期和月份字段以及日期和年度字段和日期以及月份和年份字段?DatepickerDialog的隐藏日期和月份android

+0

要具体就这么 – Amy 2014-11-08 06:56:32

+0

你可以使用反射隐藏它,但它还是给结果,你不能隐藏在最新的手机。最好创建自己的像我这里http://stackoverflow.com/a/38344035/3496570 – Nepster 2016-07-13 06:27:34

回答

0

我害怕没有简单的方法来做到这一点。您需要创建自己的自定义类。

看看接受的答案在这里:

Hide Date from Date Picker

0

尝试这样,

创建日期选择器自定义类以下,每次用户改变月份将更新标题中的日期/年份

class CustomDatePickerDialog extends DatePickerDialog implements OnDateChangedListener { 

private DatePickerDialog mDatePicker; 

@SuppressLint("NewApi") 
public CustomDatePickerDialog(Context context,int theme, OnDateSetListener callBack, 
     int year, int monthOfYear, int dayOfMonth) { 
    super(context, theme,callBack, year, monthOfYear, dayOfMonth); 
    mDatePicker = new DatePickerDialog(context,theme,callBack, year, monthOfYear, dayOfMonth); 

    mDatePicker.getDatePicker().init(2013, 7, 16, this); 

    updateTitle(year, monthOfYear); 

} 
public void onDateChanged(DatePicker view, int year, 
     int month, int day) { 
    updateTitle(year, month); 
} 
private void updateTitle(int year, int month) { 
    Calendar mCalendar = Calendar.getInstance(); 
    mCalendar.set(Calendar.YEAR, year); 
    mCalendar.set(Calendar.MONTH, month); 
//  mCalendar.set(Calendar.DAY_OF_MONTH, day); 
     mDatePicker.setTitle(getFormat().format(mCalendar.getTime())); 

} 

public DatePickerDialog getPicker(){ 

    return this.mDatePicker; 
} 
    /* 
    * the format for dialog tile,and you can override this method 
    */ 
public SimpleDateFormat getFormat(){ 
    return new SimpleDateFormat("MMM, yyyy"); 
}; 
} 

并使用以下代码将隐藏日期和它的微调从日期选择器d ialog

CustomDatePickerDialog dp = new CustomDatePickerDialog(context, android.R.style.Theme_Holo_Light_Dialog, datePickerListener, year, month, day); 

       DatePickerDialog obj = dp.getPicker(); 
       try{ 
         Field[] datePickerDialogFields = obj.getClass().getDeclaredFields(); 
         for (Field datePickerDialogField : datePickerDialogFields) { 
          if (datePickerDialogField.getName().equals("mDatePicker")) { 
           datePickerDialogField.setAccessible(true); 
           DatePicker datePicker = (DatePicker) datePickerDialogField.get(obj); 
           Field datePickerFields[] = datePickerDialogField.getType().getDeclaredFields(); 
           for (Field datePickerField : datePickerFields) { 
            if ("mDayPicker".equals(datePickerField.getName()) || "mDaySpinner".equals(datePickerField 
             .getName())) { 
             datePickerField.setAccessible(true); 
             Object dayPicker = new Object(); 
             dayPicker = datePickerField.get(datePicker); 
             ((View) dayPicker).setVisibility(View.GONE); 
            } 
           } 
           } 

          } 
         }catch(Exception ex){ 
         } 
       obj.show();