Подтвердить что ты не робот

Как отобразить выбор даты для android с полями только месяца и года?

Я хочу отключить опцию выбора дня в android sdk date picker. любая простая xml-конфигурация была бы лучшей

4b9b3361

Ответ 1

Я только что выпустил новую схему выбора даты, которая позволяет вам создавать пользовательские подборщики дат. Я также предоставил несколько примеров выбора даты, например, тот, который вы ищете. Надеюсь, что это сработает для вас.

код можно найти здесь: https://github.com/bendemboski/DateSlider

ОБНОВЛЕНИЕ 06/2014: Эта библиотека была разработана в 2010 году и была сохранена с 2011 года. Поэтому она, скорее всего, устарела.

Ответ 2

Можно взломать экземпляр DatePicker с помощью отражения. Таким образом, вы можете получить доступ к экземпляру NumberPicker, который представляет день в DatePicker:

datePicker = (DatePicker) findViewById(R.id.expiration_date);
try {
    Field f[] = datePicker.getClass().getDeclaredFields();
    for (Field field : f) {
        if (field.getName().equals("mDayPicker")) {
            field.setAccessible(true);
            Object dayPicker = new Object();
            dayPicker = field.get(datePicker);
            ((View) dayPicker).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());
}

Ответ 3

Говоря об отражении, это работает в Android 4.4.2 SDK

"mDaySpinner"

вместо

"mDayPicker"

Ответ 4

Я думаю, что это лучшее решение

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

Ответ 5

EDIT: в соответствии с приведенным ниже комментарием я больше не буду отвечать за этот ответ.

Я не думаю, что вы можете сделать это с помощью выбора даты по дате. Вам нужно будет создать его из базовых элементов интерфейса Android. Но вместо того, чтобы идти на эту проблему, почему бы не использовать лучший элемент библиотеки, например, это великолепное колесо iPhone-esque: http://code.google.com/p/android-wheel/ Я не знаю, t использовал его еще, но я планирую!

Ответ 6

Это отлично работает в версии 2.2. Но название диалога не изменяется.

for (Field datePickerDialogField : datePickerDialogFields) {           

    if (datePickerDialogField.getName().equals("mDatePicker")) {
        datePickerDialogField.setAccessible(true);
        DatePicker datePicker = (DatePicker) datePickerDialogField.get(datePickerDialog);

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

Ответ 7

Вы можете использовать https://github.com/SimonVT/android-datepicker виджет для совместимости с backported и сделать сборщик событий "ушедшим"

<net.simonvt.numberpicker.NumberPicker
        android:id="@+id/day"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dip"
        android:layout_marginRight="16dip"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:visibility="gone"
        />