10

datepickerdialogの日付フィールドを非表示/削除する方法。実際、私の要件はネイティブの日付ピッカーダイアログを使用することですが、それは日、月、年で表示されます。しかし、私の要件に従って、私は月と年だけを必要とします。だから私はビューから日フィールドを非表示または削除したいと思います。

どんな助けでも大いに役立つでしょう。

4

8 に答える 8

13

この種のことを行うためにリフレクションを使用することはお勧めしません。

これを行うには、より簡単できれいな方法があります。

((ViewGroup) datePickerDialog.getDatePicker()).findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE);

.getDatePicker()メソッド from は でDatePickerDialog動作することに注意してくださいAPI LEVEL >= 11

于 2014-11-03T18:41:52.497 に答える
6
Private DatePickerDialog createDialogWithoutDateField(){

    DatePickerDialog dpd = new DatePickerDialog(_activity, ExpiryDateSetListener,cyear,cmonth, cday);
    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 ("mDayPicker".equals(datePickerField.getName())) {
                  datePickerField.setAccessible(true);
                  Object dayPicker = new Object();
                  dayPicker = datePickerField.get(datePicker);
                  ((View) dayPicker).setVisibility(View.GONE);
               }
            }
         }

      }
    }catch(Exception ex){
    }
  return dpd;

}

上記のコードを使用して、DatePickerDialog で日フィールドを非表示にします。

このリンクを参照してください

于 2012-05-20T13:32:50.537 に答える
6

のソース コードをDatePicker入手DatePickerDialogして、クローンを作成し、独自のパッケージにリファクタリングし、必要に応じて変更することができます。

于 2012-05-20T13:39:54.810 に答える
1
((ViewGroup) datePickerDialog.getDatePicker()).findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE); 

これは正常に動作します

于 2016-12-12T09:41:21.403 に答える
0
Calendar c = Calendar.getInstance();
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), AlertDialog.THEME_HOLO_DARK,
new DatePickerDialog.OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        txtMonth.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
    }

}, mYear, mMonth, mDay);
((ViewGroup) datePickerDialog.getDatePicker()).findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE);
datePickerDialog.show();

このリンクを参照してくださいdatepicker の例で日の選択を無効にする

于 2016-12-02T12:58:16.520 に答える
-4

カスタマイズしたくない限り、それほど深くする必要はないと思います..次のものがあります:

mDatePicker.getDatePicker().setCalendarViewShown(false);

これは、カレンダー セグメントを削除するための非常に正当な呼び出しです。

于 2013-07-10T15:00:04.830 に答える