Android的DatePicker的变化只月份和年份年份、Android、DatePicker

2023-09-12 08:03:46 作者:谈情不如逗狗

我有一个DatePickerDialog,我想只查看月份和年份。我可以改变这个code? 谢谢

 公共无效chooseDate2(视图v){
    新DatePickerDialog(act.this,D1,
                          dateAndTime1.get(Calendar.YEAR)+ 2,
                         dateAndTime1.get(Calendar.MONTH)
                         dateAndTime1.get(Calendar.DAY_OF_MONTH))
      。显示();
  }
  私人无效updateLabel2(){
    scadenza.setText(fmtDateAndTime.format(dateAndTime1.getTime()));
  }
  DatePickerDialog.OnDateSetListener D1 =新DatePickerDialog.OnDateSetListener(){
    公共无效onDateSet(DatePicker的观点,年整型,诠释monthOfYear,诠释DAYOFMONTH){
        dateAndTime1.set(Calendar.YEAR,一年);
      dateAndTime1.set(Calendar.MONTH,monthOfYear);
     dateAndTime1.set(Calendar.DAY_OF_MONTH,DAYOFMONTH);
      updateLabel2();
    }
  };
 

解决方案

请尝试以下code。它会显示一个的DatePicker 只有年和月(不含当天)

 私人DatePickerDialog createDialogWithoutDateField(){
        DatePickerDialog DPD =新DatePickerDialog(本,空,2014年,1,24);
        尝试 {
            java.lang.reflect.Field中的[] datePickerDialogFields = dpd.getClass()getDeclaredFields()。
            对于(java.lang.reflect.Field中datePickerDialogField:datePickerDialogFields){
                如果(datePickerDialogField.getName()。等于(mDatePicker)){
                    datePickerDialogField.setAccessible(真正的);
                    DatePicker的日期选择器=(DatePicker的)datePickerDialogField.get(DPD);
                    java.lang.reflect.Field中的[] datePickerFields = datePickerDialogField.getType()getDeclaredFields()。
                    对于(java.lang.reflect.Field中datePickerField:datePickerFields){
                        Log.i(测试,datePickerField.getName());
                        如果(mDaySpinner.equals(datePickerField.getName())){
                            datePickerField.setAccessible(真正的);
                            对象dayPicker = datePickerField.get(日期选择器);
                            ((查看)dayPicker).setVisibility(View.GONE);
                        }
                    }
                }
            }
        }
        赶上(例外前){
        }
        返回DPD;
    }
 

该方法返回一个日期选择器对话框。所以,在你的按钮的的onClick 方法中添加以下code,以显示你的对话框。

  createDialogWithoutDateField()显示();
 
Android选择时间 TimePickerDialog和DatePickerDialog的使用

I have a DatePickerDialog and I want view only Month and Year. Can I change this code? Thanks

public void chooseDate2(View v) {
    new DatePickerDialog(act.this, d1,
                          dateAndTime1.get(Calendar.YEAR) + 2,
                         dateAndTime1.get(Calendar.MONTH),
                         dateAndTime1.get(Calendar.DAY_OF_MONTH))
      .show();
  }
  private void updateLabel2() {
    scadenza.setText(fmtDateAndTime.format(dateAndTime1.getTime()));           
  }
  DatePickerDialog.OnDateSetListener d1=new DatePickerDialog.OnDateSetListener() {
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        dateAndTime1.set(Calendar.YEAR, year);
      dateAndTime1.set(Calendar.MONTH, monthOfYear);
     dateAndTime1.set(Calendar.DAY_OF_MONTH, dayOfMonth);
      updateLabel2();
    }
  };

解决方案

Try the following code. It will show a DatePicker with only the year and month (without day)

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;
    }

This method returns a date picker dialog. So , in your button's onClick method add the following code to display your dialog.

createDialogWithoutDateField().show();