Диалоговое окно выбора даты и времени
Я хочу создать диалог, который может выбрать времени и дата в то же время.
Я знаю, что нет виджета по умолчанию, который может сделать это на Android. Я также знаю, что есть проектов с открытым исходным кодом о том, как сделать подобный персонал. Проблема в этом проекте заключается в том, что в диалоге у нас есть две кнопки: datePicker и элемента управления datepicker.
и это не что я хочу сделать-я хочу, чтобы выбор даты и времени появился одновременно.
Поэтому я думаю, что две основные проблемы будут:
- сначала сделать выбор времени и даты появляются в том же диалоговом окне.
- и вторая проблема будет заключаться в изменении внешнего вида выбора времени и даты (оранжевый цвет).
первая проблема была решена путем Бхавеша. Вот что я получаю:
проблема сейчас в том, что я хочу чтобы изменить все синий цвет строки до оранжевого цвета.
Я добавил android:calendarViewShown="false"
чтобы удалить календарь справа:) Спасибо Бхавеш и я изменил тему на Холо
Вот что я получаю:
вы можете скачать кодекс (это лучшее, что я могу сделать). Вы можете скачать с здесь.
3 ответа:
сначала времени и даты появляются в том же диалоговом окне
здесь я могу помочь вам кое в чем: вы можете создать макет, состоящий из
DatePicker
иTimePicker
наLinearLayout
с ориентацией по вертикали.custom_dialog начиная.XML-код:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <DatePicker android:id="@+id/datePicker1" android:layout_width="wrap_content" android:layout_height="wrap_content" > </DatePicker> <TimePicker android:id="@+id/timePicker1" android:layout_width="wrap_content" android:layout_height="wrap_content" > </TimePicker> </LinearLayout>
затем использовать этот макет для создания диалогового окна.
Dialog dialog = new Dialog(mContext); dialog.setContentView(R.layout.custom_dialog); dialog.setTitle("Custom Dialog");
реагировать на пользователя, взаимодействующего с вашим
TimePicker
, сделать что-то вроде это:TimePicker tp = (TimePicker)dialog.findViewById(R.id.timepicker1); tp.setOnTimeChangedListener(myOnTimechangedListener);
чтобы получить значения из Date-and TimePicker, когда пользователь закончил их настройку, добавьте кнопку OK в своем диалоговом окне, а затем прочитайте значения даты и времени из Date - and TimePicker, когда пользователь нажимает OK.
чтобы сделать что-то, что выглядит точно так же, как на ваших снимках экрана, я рекомендую вам сделать все на заказ с вашей собственной логикой.
чтобы изменить цвета синей полосы попробуйте ниже.
определите свою собственную тему следующим образом, которая расширяет THEME_HOLO_DARK
попробуйте сделать следующее: -
<style name="testo" parent="@android:style/Widget.DeviceDefault.DatePicker"> <item name="android:divider">@drawable/MyDivider</item> </style>
проверьте следующие change-basic-theme-color-of-android-application
есть много доступных решений есть один из них, мне нравится этот простой метод:
String mDateTime; void getDateTime(){ final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); final int hour = c.get(Calendar.HOUR_OF_DAY); final int minute = c.get(Calendar.MINUTE); mDateTime = ""; new DatePickerDialog( mContext, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { mDateTime = year +"-"+ month +"-"+ dayOfMonth; new Handler().postDelayed(new Runnable() { @Override public void run() { new TimePickerDialog(mContext, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { mDateTime+=" "+hourOfDay+":"+minute; } }, hour, minute, false).show(); } },500); } }, year, month, day).show(); }