Intereting Posts
Где я могу получить драйвер Radio с открытым исходным кодом и RIL для телефона Android? Instabug для предупреждения о сбое Android Как изменить индикатор HomeAsUp на новой панели инструментов AppCompat? Кордова 3.5.0 Ошибка установки – установите Android-цель 19 Компилировать и использовать ABI-зависимые исполняемые двоичные файлы в Android с Android Studio 2.2 и CMake Обновить ListView в основном потоке из другого потока Как создать фон формы параллелограмма? Как распределить выделение Renderscript с помощью OpenGL в Android Как отключить прокрутку GridView в Android? Плохие параметры: BadParametersError: Параметры были неверными. Нам нужны необходимые возможности в сетке Selenium во время работы Appium Android: FragmentPagerAdapter: метод getItem, вызываемый дважды в первый раз Дооснащение: сервер возвращает как ETag, так и Cache-Control: max-age = 60. Не следует ли использовать кеш при запросе <60s? Реагировать на native errorTimeout на получение списка устройств. При запуске hello world на ubuntu Java.lang.NoClassDefFoundError: в dalvik.system.NativeStart.main (собственный метод) Прочитайте тело ответа в Android-перехватчике Android

Как отключить CalendarView в DatePicker?

На моем экране настроек у меня есть виджет выбора даты. В дизайнере в Eclipse он показывает, как я хочу (3 прядильника для DMY), но когда я тестирую свое устройство, я получаю довольно странное представление с боковым поворотником слева и календарем справа. Никогда не видел этого раньше (!), Но, проводя некоторые исследования, я думаю, что вижу «CalendarView».

Я обнаружил, что мне нужно установить свойство «calendarViewShown» в false, но мой XML выдает ошибку с этим. Я нашел здесь еще один вопрос, который предполагал, что уровень API был виноват (мой minSDKLevel равен 7, но я нацелен на 11, чтобы я мог получить кнопку панели действий, а не меню oldskool). Поэтому я подумал, что попробую установить его в коде:

int currentapiVersion = android.os.Build.VERSION.SDK_INT; if (currentapiVersion >= 11) minDateSelector.setCalendarViewShown = false; 

Но опять же, этот fail-setCalendarViewShown не найден. Но в документах сказано, что оно должно существовать. Есть идеи?!

Solutions Collecting From Web of "Как отключить CalendarView в DatePicker?"

Если вы ориентируетесь на более позднюю версию API, вы можете использовать следующий XML (не нужно писать код Java) в <DatePicker> :

  android:calendarViewShown="false" 

Метод в DatePicker

  public void setCalendarViewShown (boolean shown) 

Существует, начиная с API 11. Если вы minSdkLevel = 7, компилятор не распознает это как допустимый метод – этот метод не существует на Android 2.3 или 2.2. Лучшим способом решения этой проблемы является использование рефлексии. Что-то вроде этого должно работать должным образом:

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

В тех случаях я использую

 import android.os.Build; @TargetApi(Build.VERSION_CODES.HONEYCOMB) public void someThing() { [...] if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { minDateSelector.setCalendarViewShown(false); } } 

Я считаю, что читаемость лучше, чем использование рефлексии, и стиль лучше, чем улов и игнорирование исключений. Конечно, работа над отражением тоже работает.

Я работал с следующей конфигурацией XML:

 android:datePickerMode="spinner" android:calendarViewShown="false" 

Для меня не работала только следующая конфигурация:

 android:calendarViewShown="false" 

У меня была такая же проблема, как и вы, я не мог заставить изменение появляться через XML.

Вы на правильном пути, попробуйте изменить свою последнюю строку:

 minDateSelector.setCalendarViewShown(false);