Отображение DatePicker с или без поля года - PullRequest
5 голосов
/ 10 мая 2010

Я хотел бы отобразить DatePicker, где поле года будет видно или нет, в соответствии с флажком.

Но я не нашел ничего, что дало бы мне способ его реализовать.

Есть идеи, пожалуйста?

Заранее спасибо.

Ответы [ 6 ]

2 голосов
/ 09 октября 2012

установите флажок прослушивателя, так как вам необходимо просмотреть флажок

if(id == R.id.event_checkBox_year)
    {
        if(ch.isChecked())
        {
            visiblity = View.GONE;
        }
        else
        {
            visiblity = View.VISIBLE;
        }
        showHideYear(visiblity);
    }

 private void showHideYear(int visiblity)
 {
     try {
            Field f[] = date.getClass().getDeclaredFields();
            for (Field field : f) {
                if (field.getName().equals("mYearSpinner") ||field.getName().equals("mYearPicker") ) 
                {
                    field.setAccessible(true);
                    Object yearPicker = new Object();
                    yearPicker = field.get(date);
                    ((View) yearPicker).setVisibility(visiblity);
                }
            }
        } catch (SecurityException e) 
        {
            Log.d("ERROR", e.getMessage());
        } 
        catch (IllegalArgumentException e)
        {
            Log.d("ERROR", e.getMessage());
        } catch (IllegalAccessException e) 
        {
            Log.d("ERROR", e.getMessage());
        }
 }
2 голосов
/ 18 августа 2011

Взгляните на DateSlider , отличную настраиваемую альтернативу DatePicker.

1 голос
/ 25 мая 2010

Поскольку невозможно удалить поле года из DatePicker, я, наконец, решил добавить CheckBox "игнорировать поле года" для реализации решения.

0 голосов
/ 09 июня 2015

Один лайнер:

getDatePicker().findViewById(Resources.getSystem().getIdentifier("year", "id", "android")).setVisibility(View.GONE);
0 голосов
/ 23 февраля 2015

Вот решение, позволяющее не показывать счетчик или указатель года в диалоговом окне выбора даты

try {

       Field f[] = datePickerDialog.getClass().getDeclaredFields();
        for (Field field : f) {
            if (field.getName().equals("mDatePicker")) {
                field.setAccessible(true);
                Object datePicker=new Object();
                datePicker=field.get(datePickerDialog);
                Field[] fields=datePicker.getClass().getDeclaredFields();
                for(Field field1:fields){
                    if(field1.getName().equals("mYearSpinner") || field1.getName().equals("mYearPicker")){
                        field1.setAccessible(true);
                        Object ye=field1.get(datePicker);
                        ((View)ye).setVisibility(View.GONE);
                    }
                }
            }
        }
     }
    catch (SecurityException e) {
        Log.d("ERROR", e.getMessage());
    }
    catch (IllegalArgumentException e) {
        Log.d("ERROR", e.getMessage());
    }
    catch (IllegalAccessException e) {
        Log.d("ERROR", e.getMessage());
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...