Поиск по сайту:

Диалоговое окно выбора даты и времени Android


Средство выбора даты и времени для Android часто используется в приложениях для Android. В этом уроке мы продемонстрируем использование диалогового окна выбора даты и таймера в нашем приложении для Android. Эти компоненты используются для выбора даты и времени в пользовательском интерфейсе. Для этого мы будем использовать классы DatePickerDialog и TimePickerDialog с классом Calendar в коде нашего приложения для Android.

Android DatePickerDialog и TimePickerDialog

Хотя «Выбор даты» и «Выбор времени» можно использовать как независимые виджеты, они занимают больше места на экране. Следовательно, использование их внутри диалога является лучшим выбором. К счастью, Android предоставляет свои собственные классы DatePickerDialog и TimePickerDialog. Классы DatePickerDialog и TimePickerDialog имеют методы обратного вызова onDateSetListener() и onTimeSetListener() соответственно. Эти методы обратного вызова вызываются, когда пользователь заканчивает заполнять дату и время соответственно. Класс DatePickerDialog состоит из конструктора с 5 аргументами и параметрами, перечисленными ниже.

  1. Контекст: требуется контекст приложения.
  2. Функция обратного вызова: onDateSet() вызывается, когда пользователь устанавливает дату со следующими параметрами:

  • int year: будет сохранен текущий год, выбранный из диалогового окна.
  • int monthOfYear : будет сохранен текущий выбранный месяц из диалогового окна.
  • int dayOfMonth: будет сохранен текущий выбранный день из диалогового окна.

<старт=\4\>

  • int mYear : показывает текущий год, который отображается при появлении диалогового окна.
  • int mMonth : показывает текущий месяц, который отображается при появлении диалогового окна.
  • int mDay: показывает текущий день, который виден при появлении диалогового окна.
  • Класс TimePickerDialog состоит из конструктора с 5 аргументами и параметрами, перечисленными ниже.

    1. Контекст: требуется контекст приложения.
    2. Функция обратного вызова: onTimeSet() вызывается, когда пользователь устанавливает время со следующими параметрами:

    • int hourOfDay: будет сохранен текущий выбранный час дня из диалогового окна.
    • целая минута: будет сохранена текущая выбранная минута из диалогового окна.

    <старт=\4\>

  • int mHours: показывает текущий час, который виден при появлении диалогового окна.
  • int mMinute : показывает текущую минуту, которая отображается при появлении диалогового окна.
  • boolean false : если установлено значение false, время будет отображаться в 24-часовом формате, иначе нет
  • Пример структуры проекта Android Date Time Picker

    Код проекта диалогового окна выбора даты и времени Android

    activity_main.xml состоит из двух кнопок для вызова диалоговых окон выбора даты и времени и установки выбранного пользователем времени в двух представлениях EditText. Код xml приведен ниже. activity_main.xml

    <RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
        xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent"
        android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
    
        <EditText
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:id="@+id/in_date"
            android:layout_marginTop="82dp"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="SELECT DATE"
            android:id="@+id/btn_date"
            android:layout_alignBottom="@+id/in_date"
            android:layout_toRightOf="@+id/in_date"
            android:layout_toEndOf="@+id/in_date" />
    
        <EditText
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:id="@+id/in_time"
            android:layout_below="@+id/in_date"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="SELECT TIME"
            android:id="@+id/btn_time"
            android:layout_below="@+id/btn_date"
            android:layout_alignLeft="@+id/btn_date"
            android:layout_alignStart="@+id/btn_date" />
    
    </RelativeLayout>
    

    Класс MainActivity.java приведен ниже:

    package com.journaldev.datetimepickerdialog;
    
    import android.app.DatePickerDialog;
    import android.app.TimePickerDialog;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Button;
    import android.widget.DatePicker;
    import android.widget.EditText;
    import android.widget.TimePicker;
    
    import java.util.Calendar;
    
    public class MainActivity extends AppCompatActivity implements
            View.OnClickListener {
    
        Button btnDatePicker, btnTimePicker;
        EditText txtDate, txtTime;
        private int mYear, mMonth, mDay, mHour, mMinute;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            btnDatePicker=(Button)findViewById(R.id.btn_date);
            btnTimePicker=(Button)findViewById(R.id.btn_time);
            txtDate=(EditText)findViewById(R.id.in_date);
            txtTime=(EditText)findViewById(R.id.in_time);
    
            btnDatePicker.setOnClickListener(this);
            btnTimePicker.setOnClickListener(this);
    
        }
    
        @Override
        public void onClick(View v) {
    
            if (v == btnDatePicker) {
    
                // Get Current Date
                final Calendar c = Calendar.getInstance();
                mYear = c.get(Calendar.YEAR);
                mMonth = c.get(Calendar.MONTH);
                mDay = c.get(Calendar.DAY_OF_MONTH);
    
    
                DatePickerDialog datePickerDialog = new DatePickerDialog(this,
                        new DatePickerDialog.OnDateSetListener() {
    
                            @Override
                            public void onDateSet(DatePicker view, int year,
                                                  int monthOfYear, int dayOfMonth) {
    
                                txtDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
    
                            }
                        }, mYear, mMonth, mDay);
                datePickerDialog.show();
            }
            if (v == btnTimePicker) {
    
                // Get Current Time
                final Calendar c = Calendar.getInstance();
                mHour = c.get(Calendar.HOUR_OF_DAY);
                mMinute = c.get(Calendar.MINUTE);
    
                // Launch Time Picker Dialog
                TimePickerDialog timePickerDialog = new TimePickerDialog(this,
                        new TimePickerDialog.OnTimeSetListener() {
    
                            @Override
                            public void onTimeSet(TimePicker view, int hourOfDay,
                                                  int minute) {
    
                                txtTime.setText(hourOfDay + ":" + minute);
                            }
                        }, mHour, mMinute, false);
                timePickerDialog.show();
            }
        }
    }
    

    Скачать Android Date Time Picker Project