Выбор месяца и года только для Android в материальном дизайне

Я работаю над приложением, которому необходимо вводить дату истечения срока действия кредитной карты, но средство выбора даты и времени andorid 5.0+ имеет только варианты выбора даты с днями. Есть ли какая-нибудь библиотека для этого, потому что я не могу ее найти. Я также не нашел ничего в рекомендациях по дизайну материалов по этому поводу.

Спасибо


person Dominik Mičuta    schedule 18.09.2015    source источник
comment
Создайте 2 отдельных счетчика, один со значением месяцев, а другой со значениями не менее 25 лет. Вы можете добавить создать массив для месяца и года и раздуть его до счетчиков.   -  person ch3tanz    schedule 18.09.2015
comment
См. раздел stackoverflow. ком/вопросы/21321789/   -  person headuck    schedule 18.09.2015
comment
Ни один из этих ответов не подходит для приложения для дизайна материалов...   -  person Dominik Mičuta    schedule 18.09.2015
comment
вы нашли решение для этого?   -  person Hala.M    schedule 05.01.2016
comment
нет, я использовал сборщики в старом стиле. некоторая библиотека дизайна материалов с этой функцией была бы отличной...   -  person Dominik Mičuta    schedule 11.01.2016
comment
@ DominikMičuta, у меня такая же проблема, ты решил? Поделись, пожалуйста   -  person Aditya Vyas-Lakhan    schedule 30.06.2016
comment
@AdityaVyas-Lakhan Нет, официального способа пока нет, и библиотеки я тоже не нашел. Мы использовали старый голографический диалог :(   -  person Dominik Mičuta    schedule 30.06.2016
comment
В макете используется стандартный виджет DatePicker. В логике приложения вам необходимо программно с отражением удалить DAY spinner, например: как в этом stackoverflow.com/questions/10673842/ или есть коды для удаления дневного счетчика в этом вопросе ниже.   -  person Dominik Mičuta    schedule 30.06.2016
comment
я использую то же самое, но все равно он показывает дни   -  person Aditya Vyas-Lakhan    schedule 30.06.2016


Ответы (2)


Продолжил создание модифицированного средства выбора даты под названием Простое средство выбора даты... использовал код, аналогичный средству выбора даты, только для отображения месяца и года. Вы также можете предоставить свою собственную тему для SimpleDatePickerDialog.

см. https://github.com/resengupta/Month-Year-Date-Picker

person ReeSen    schedule 15.10.2015
comment
Да, я нашел такую ​​библиотеку, но это не в материальном дизайне :( - person Dominik Mičuta; 15.10.2015

Пожалуйста, попробуйте это

        Field f[] = picker.getClass().getDeclaredFields();
    for (Field field : f) {
        if (field.getName().equals("mDayPicker")) {
            field.setAccessible(true);
            Object dayPicker = new Object();
            dayPicker = field.get(picker);
            ((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());
}

ты можешь попробовать это

DatePicker dpDate = (DatePicker) findViewById(R.id.dpDate);

// Initialize Date Picker
int year    = dpDate.getYear();
int month   = dpDate.getMonth();
int day     = dpDate.getDayOfMonth();
dpDate.init(year, month, day, this);

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
        {
            int daySpinnerId = Resources.getSystem().getIdentifier("day", "id", "android");
            if (daySpinnerId != 0) 
            {
                View daySpinner = dpDate.findViewById(daySpinnerId);
                if (daySpinner != null) 
                {
                    daySpinner.setVisibility(View.GONE);
                }
            }
        }

        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
        {
            int monthSpinnerId = Resources.getSystem().getIdentifier("month", "id", "android");
            if (monthSpinnerId != 0) 
            {
                View monthSpinner = dpDate.findViewById(monthSpinnerId);
                if (monthSpinner != null) 
                {
                    monthSpinner.setVisibility(View.GONE);
                }
            }
        }

        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
        {
            int yearSpinnerId = Resources.getSystem().getIdentifier("year", "id", "android");
            if (yearSpinnerId != 0) 
            {
                View yearSpinner = dpDate.findViewById(yearSpinnerId);
                if (yearSpinner != null) 
                {
                    yearSpinner.setVisibility(View.GONE);
                }
            }
        }

Чтобы получить больше информации

Скрыть день, месяц или год от DatePicker в Android 5.0+ Lollipop

person Ashish Agrawal    schedule 18.09.2015
comment
Это решение для средства выбора даты без материального дизайна, но не для официального средства выбора даты диалогового окна материала. - person Dominik Mičuta; 18.09.2015