Как программно изменить DatePicker и TimePicker для отображения в режиме «Календарь» (или в режиме «Часы», соответственнAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как программно изменить DatePicker и TimePicker для отображения в режиме «Календарь» (или в режиме «Часы», соответственн

Сообщение Anonymous »

Мое приложение для Android использует android.widget.DatePicker и android.widget.TimePicker в нескольких местах. Я хотел бы дать пользователю возможность выбрать, хотят ли они отображать это диалоговое окно в «режиме календаря» или «режиме счетчика» (или в «режиме часов» или «режиме счетчика», соответственно, для TimePicker).
Я нашел разное. добавляет (например, Как программно установить datePickerMode="spinner"?) и после этого я звоню:

Код: Выделить всё

datePicker.setSpinnersShown(true);
datePicker.setCalendarViewShown(false);
(для режима счетчика или наоборот, для другого режима).
Но эти вызовы не оказывают никакого влияния на рендеринг DatePicker.
Чего мне не хватает?
Позднее дополнение:
Я только что узнал, что если я объявлю DatePicker изначально использовать режим счетчика следующим образом: ... тогда вызовы работают и фактически переключают режим отображения.
Но недостатком этого подхода является то, что весь виджет выглядит странно, т.е. отображается с неправильной высотой (заголовок отсутствует, а календарь обрезан внизу):
Режим календаря:
Изображение

Режим Spinner:
Изображение

... вместо правильного отображения показывает заголовок с текущей выбранной датой:
Изображение

Мне этот виджет кажется довольно глючным... :-(
Второе дополнение:
Виджет DatePicker действительно отстой! Чтобы обойти неработающий setXYZShown(...)-methods Я создал новый макет, в котором определяю ДВА DatePicker (один в режиме календаря, а другой в режиме счетчика) с намерением всегда показывать только один и скрывать другой в зависимости от выбранных пользователем предпочтений. То же самое для диалогового окна TimePicker.
Теперь переключение работает, и для TimePicker оно теперь отображается по желанию:
в режиме часов (виджет режима часов "видимый" / виджет режима счетчика "ушел"):
Изображение

по сравнению с режимом счетчика (т. е. виджет режима часов "ушел" / виджет режима счетчика "видимый"):
Изображение

Но виджет DatePicker отображает ОК только в режиме календаря (т. е. виджет режима календаря "видимый" / виджет режима счетчика "ушел"):
Изображение

но отображает нечеткую смесь режима счетчика и календаря, когда я переключаю его в режим счетчика (т. е. виджет режима календаря «ушел» / виджет режима счетчика «видим»):
Изображение

Сначала я подумал, что в моей логике скрытия/показания есть ошибка, но это не так! Приведенный выше дисплей взят из виджета DatePicker, отображаемого в режиме Spinner!
Что особенно раздражает, так это то, что счетчик года даже не виден в вертикальном режиме, он появляется только при повороте дисплея:
Изображение

Но тот календарь справа, которого там не должно быть, все еще виден!
Что за глючный виджет :-(

Подробнее здесь: https://stackoverflow.com/questions/798 ... n-calendar
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»