2016-12-19 29 views
0

datePickerに日付と非表示の年と 月の表示のみを許可することはできますか?datePickerの日付のみ選択

アクティビティAには2つのアクティビティがありますが、私は月と年だけを表示するdatePickerを持っています。アクティビティBでは、datePickerに日付のみを表示したいが、インターネットからの解決策は見つかりません。アクティビティA

enter image description here

スクリーンショットは、ユーザが2018年6月を選択すると仮定する。次にアクティビティBで、datePickerは2018年6月にダイアログタイトルとして表示され、ユーザーは日付のみを選択できます。

アクティビティB

month = getIntent().getStringExtra("month"); // Jun 2018 

    date.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View view) { 
        showDialog(DATE_DIALOG_ID); 
       } 
      }); 

    DatePickerDialog.OnDateSetListener mDateSetListner = new DatePickerDialog.OnDateSetListener() { 

      @Override 
      public void onDateSet(DatePicker view, int year, int monthOfYear, 
            int dayOfMonth) { 

       mYear = year; 
       mMonth = monthOfYear; 
       mDay = dayOfMonth; 
      } 
     }; 

     @Override 
     protected Dialog onCreateDialog(int id) { 
      switch (id) { 
       case DATE_DIALOG_ID: 
        DatePickerDialog datePickerDialog = this.customDatePicker(); 
        return datePickerDialog; 
      } 
      return null; 
     } 

private DatePickerDialog customDatePicker() { 
     DatePickerDialog dpd = new DatePickerDialog(this, mDateSetListner, 
       mYear, mMonth, mDay); 
     try { 
      Field[] datePickerDialogFields = dpd.getClass().getDeclaredFields(); 
      for (Field datePickerDialogField : datePickerDialogFields) { 
       if ((datePickerDialogField.getName().equals("mYearPicker"))||(datePickerDialogField.getName().equals("mMonthPicker"))) { 
        datePickerDialogField.setAccessible(true); 
        DatePicker datePicker = (DatePicker) datePickerDialogField 
          .get(dpd); 
        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) { 
     } 
     return dpd; 
    } 
+0

あなたがここにhttp://stackoverflow.com/a/32902464/1790537 – Nas

答えて

2

DatePickerDialog dpd = new DatePickerDialog(getActivity(), this, year, month, day); 
     try { 
      Field[] datePickerDialogFields = dpd.getClass().getDeclaredFields(); 
      for (Field datePickerDialogField : datePickerDialogFields) { 
       if (datePickerDialogField.getName().equals("mDatePicker")) { 

        datePickerDialogField.setAccessible(true); 
        DatePicker datePicker = (DatePicker) datePickerDialogField 
          .get(dpd); 
        Field datePickerFields[] = datePickerDialogField.getType() 
          .getDeclaredFields(); 
        for (Field datePickerField : datePickerFields) { 
         if ("mYearPicker".equals(datePickerField.getName()) 
           || "mYearSpinner".equals(datePickerField 
           .getName()||"mMonthPicker".equals(datePickerField.getName())||"mMonthSpinner".equals(datePickerField.getName())) { 
          datePickerField.setAccessible(true); 
          Object dayPicker = new Object(); 
          dayPicker = datePickerField.get(datePicker); 
          ((View) dayPicker).setVisibility(View.GONE); 
         } 
        } 
       } 
      } 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
+0

確認することができますコードの下に試してみてくださいI日付、年と月 –

+0

取得はい、上記のコードを試してください。ピッカーをカスタマイズしました –

+0

私のポストをもう一度チェックしてください。ありがとう –

関連する問題