Arhn - архитектура программирования

почему виджеты отображаются по-разному в разных версиях андроида?

У меня есть приложение с DatePickerDialog. когда я запускаю один и тот же код на разных устройствах, запускаю разные андроиды, я получаю другой диалог. Я понимаю тот факт, что в разных версиях андроида один и тот же виджет может выглядеть атетически по-разному, но почему функции виджетов должны отличаться от одного и того же исходного кода.

Ниже приведены два виджета: первый — для Android 2.3.3, а второй — для Android 4.0.4. Я знаю, что они выглядят по-разному, но я хочу, чтобы дата отражалась в верхней части виджета, как в версии 2.3.3, но в версии 4.0.4. Почему в версии 4.0.4 не отображается «Четверг, 8 ноября 2012 г.»?

2.3.3

4.0.4


Ответы:


1

Почему в версии 4.0.4 не отображается «Четверг, 8 ноября 2012 г.»?

Только тот, кто принял это решение, сможет ответить. Если бы мне пришлось попробовать, я бы предположил, что они решили, что это как-то красивее.

Вы, конечно, можете создать свой собственный диалог выбора даты, который отображает всю информацию, которую вы хотите, именно так, как вы хотите. Вероятно, это лучший путь, если вы хотите, чтобы ваше приложение было на 100 % согласованным во всех версиях API.

ИЗМЕНИТЬ:

Вот исходный код DatePickerDialog

Похоже, вы можете переопределить onDateChanged() DatePickerDialog, чтобы получить желаемый эффект. я работаю над образцом кода для публикации сейчас.

ИЗМЕНИТЬ СНОВА:

Хорошо, вот фрагмент, который заставляет его правильно работать на устройстве 4.0.3, к которому у меня есть доступ.

   df = DateFormat.getDateInstance(DateFormat.FULL);
   mCal = Calendar.getInstance();
   // Create a date picker dialog
   DatePickerDialog datePickerDialog = new DatePickerDialog(this,datePickerDialogListener, year, month, day){
       @Override
       public void onDateChanged(DatePicker view, int year,int month, int day){
           mCal.set(Calendar.YEAR, year);
            mCal.set(Calendar.MONTH, month);
            mCal.set(Calendar.DAY_OF_MONTH, day);
           setTitle(df.format(mCal.getTime()));
       }
   };

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

08.11.2012
  • DatePickerDialog имеет метод setTitle(), который вы можете использовать для установки там строки. где вам нужно это сделать, немного зависит от того, как он должен себя вести. Нужно ли менять дату в заголовке, когда пользователь меняет дату с помощью кнопок? 08.11.2012
  • да, это нужно изменить, а также отображать день недели. Это для опекунов, которые ищут свое расписание. Было бы неплохо, если бы они просто нажимали кнопки +- и не ломали голову, какое число было в прошлый вторник. 08.11.2012
  • Объект DatePicker имеет прослушиватель onChanged(), если вы можете получить ссылку на DatePicker, используемый диалогом, вы должны иметь возможность вызвать init() для него и передать ему свой собственный прослушиватель, который может установить заголовок диалога всякий раз, когда дата изменен. См. этот вопрос для получения информации о DatePicker stackoverflow.com/questions/2051153/ 08.11.2012
  • Оказывается, DatePickerDialog на самом деле реализует onDateChangedListener(), поэтому вы можете напрямую переопределить этот обратный вызов, чтобы он поместил дату в заголовок, см. Мое последнее редактирование. 08.11.2012

  • 2

    Первоначально (2.3 и более ранние [соты?]) заголовок автоматически обновлялся до текущей даты. Я думаю, они поняли, что это не всегда может быть желательным (например, я знаю, что трудно установить заголовок «обычный текст» в 2.3), поэтому они изменили его на обычный текст. Вы можете проверить обе версии кода: 2.3 и 4.0. Я считаю, что проще сделать его похожим на 2.3, чем на 4.0, но вам придется его настраивать.

    08.11.2012
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..