Как отобразить выбор даты для Android с полями только месяц и год? - PullRequest
21 голосов
/ 08 ноября 2010

Я хочу отключить опцию выбора дня в Android SDK выбора даты. любая простая XML-конфигурация будет лучшей

Ответы [ 8 ]

16 голосов
/ 15 февраля 2011

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

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

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

15 голосов
/ 19 мая 2011

Возможно взломать экземпляр 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 голосов
/ 05 февраля 2014

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

"mDaySpinner"

вместо

"mDayPicker"
2 голосов
/ 04 декабря 2015

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

  datePicker.findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE);
1 голос
/ 15 января 2011

РЕДАКТИРОВАТЬ: согласно комментарию ниже, я бы больше не следовал этому ответу.

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

0 голосов
/ 31 августа 2018

В день укрытия:

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

&

Для сокрытия Месяц:

datePicker.findViewById(Resources.getSystem().getIdentifier("month", "id", "android")).setVisibility(View.GONE);
0 голосов
/ 11 августа 2013

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

<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"
        />
0 голосов
/ 28 июля 2011

Это прекрасно работает в версии 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);
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...