при использовании средства выбора даты в Android 4.0 и выше.. как избежать просмотра календаря

Я сделал проект в Android 2.2, который содержит средство выбора даты и устанавливает для него свойства в соответствии с размером экрана, но когда я установил его в Android 4.0... представление выбора даты включает представление календаря... что делать сделать, чтобы избежать просмотра календаря вместе с средством выбора даты в Android 4.0... ниже приведены изображения средства выбора даты в 2.2 и 4.1

android 2.2 изображение средства выбора даты

android 4.1 изображение средства выбора даты


person aravind varma    schedule 24.09.2012    source источник
comment
вы можете использовать настраиваемые средства выбора даты. Он будет показывать один и тот же вид во всех версиях. stackoverflow.com/a/8411800/1412308   -  person Rajesh Rajaram    schedule 24.09.2012
comment
можно пример кода пожалуйста   -  person aravind varma    schedule 24.09.2012


Ответы (4)


Вы можете использовать yourDatepicker.setCalendarViewShown(false);

Этот метод работает в Api >= 11 .

person Chirag    schedule 24.09.2012
comment
да, я видел эту команду... но не смог заставить ее работать, так как я построил свой проект в версии 2.2... эта команда не работает - person aravind varma; 24.09.2012
comment
@aravindvarma вы должны разработать проект в Android 4.0 и установить минимальную версию SDK на 8 - person Chirag; 24.09.2012
comment
спасибо, есть ли другой способ сделать это, встроив Android 2.2? - person aravind varma; 24.09.2012
comment
и поскольку мой проект полностью выполнен в версии 2.2, могу ли я изменить его на версию 4.0 или мне нужно снова написать код? - person aravind varma; 24.09.2012
comment
@aravindvarma не нужно снова писать код. просто перейди на андроид 4.0 - person Chirag; 24.09.2012

Используйте код Raval. Но чтобы запустить его ниже версии Android 11, сделайте следующее:

int currentapiVersion = android.os.Build.VERSION.SDK_INT;
        if (currentapiVersion >= 11) {
          try {
            Method m = datePicker.getClass().getMethod("setCalendarViewShown", boolean.class);
            m.invoke(datePicker, false);
          }
          catch (Exception e) {} // eat exception in our case
        }

Теперь он работает на всех версиях Android (выше API > 3).

person tobias    schedule 26.09.2012
comment
я разобрался...спасибо за ответ - person aravind varma; 28.09.2012
comment
У меня проблема :) Приведенный выше код отлично работает вплоть до API 8. Но на API 4 происходит сбой. Проблема заключается в вызове setCalendarViewShown(), хотя он не вызывается из-за оператора if. Каким-то образом он анализируется при запуске, и приложение вылетает. - person tobias; 28.09.2012
comment
Для вызова требуется уровень API 11 (текущий минимум 8): android.widget.DatePicker#setCalendarViewShown. Что я делаю не так? - person Tjaart; 15.10.2012
comment
Интересно, что включение тела оператора if выше приводит к ошибке, которую я получил. Кажется, теперь это работает. - person Tjaart; 15.10.2012

Если у вас есть экземпляр DatePicker, вы должны написать только это в своем методе `

        int currentapiVersion = android.os.Build.VERSION.SDK_INT;
        if (currentapiVersion >= 11) {
            yourDatePickerInstance.setCalendarViewShown(false);
        }`
person Петър Петров    schedule 10.07.2013

Чтобы избежать календаря в вашем DatePicker для более поздних API

Добавлять

android:datePickerMode="spinner"

вместо

android:calenderViewShown="false"

в XML макета для виджета DatePicker.

person bishal    schedule 21.08.2015