Okno wyboru daty i czasu

Chcę utworzyć okno dialogowe, które może wybrać Czas i datę w tym samym czasie.
Wiem, że nie ma domyślnego widżetu, który może to zrobić na Androidzie . Wiem też, że istnieją projekty open source , W Jaki Sposób Podobni pracownicy. Problem w tym projekcie polega na tym, że w oknie dialogowym mamy dwa przyciski: datePicker i timePicker.

Tutaj wpisz opis obrazka

I to nie jest to, co chcę zrobić - chcę, aby Data i godzina picker pojawia się w tym samym czasie.
Więc myślę, że dwa główne problemy będą:

  1. najpierw ustaw selektor czasu i daty w tym samym oknie dialogowym.
  2. a drugim problemem będzie zmiana wyglądu selektora czasu i daty (kolor pomarańczowy).
Pierwszy problem został rozwiązany przez Bhavesh. Oto co dostaję:

Tutaj wpisz opis obrazka

Problem polega teraz na tym, że chcę zmienić wszystkie niebieski kolor paska na pomarańczowy kolor .
Dodałem android:calendarViewShown="false" aby usunąć kalendarz po prawej :) dzięki Bhavesh i zmieniłem temat na HOLO
Oto co dostaję:

Tutaj wpisz opis obrazka

Możesz pobrać kod (tylko tyle mogę zrobić). Możesz pobrać z tutaj .

Author: Community, 2013-01-10

3 answers

Najpierw ustaw selektor czasu i daty w tym samym oknie dialogowym

Tutaj mogę ci pomóc: możesz utworzyć układ składający się z DatePicker i TimePicker w LinearLayout z orientacją ustawioną na pionową.

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>

Następnie użyj tego układu, aby utworzyć okno dialogowe.

Dialog dialog = new Dialog(mContext);

dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("Custom Dialog");

Aby zareagować na interakcję użytkownika z twoim TimePicker, Zrób coś takiego:

TimePicker tp = (TimePicker)dialog.findViewById(R.id.timepicker1);
tp.setOnTimeChangedListener(myOnTimechangedListener);

Aby pobrać wartości z Date-I TimePicker gdy użytkownik zakończy ich ustawianie, Dodaj przycisk OK w oknie dialogowym, a następnie odczytaj wartości daty i czasu Z daty i TimePicker, gdy użytkownik naciśnie OK.

Aby zrobić coś, co wygląda dokładnie tak, jak na zrzutach ekranu, polecam zrobić wszystko na zamówienie z własną logiką.

 77
Author: Bhavesh Patadiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-22 14:10:04

Aby zmienić kolory niebieskiego paska, wypróbuj poniższe opcje.

Zdefiniuj swój własny motyw w następujący sposób, który rozszerza THEME_HOLO_DARK

Spróbuj w następujący sposób: -

<style name="testo" parent="@android:style/Widget.DeviceDefault.DatePicker">
    <item name="android:divider">@drawable/MyDivider</item>
</style>

Sprawdź następujące Zmień-podstawowy-motyw-kolor-aplikacji na Androida

 2
Author: Harish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:12

Dostępnych jest wiele rozwiązań jest jedno z nich, podoba mi się ta prosta metoda:

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();
}
 0
Author: Md Imran Choudhury,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-19 02:54:06