Hướng dẫn sử dụng Android DatePickerDialog
Xem thêm các chuyên mục:
Android DatePickerDialog đặt một DatePicker trên một Dialog, nó cho phép người dùng lựa chọn một ngày tháng (Date). Về cơ bản không có sự khác biệt đáng kể về việc sử dụng giữa DatePickerDialog và DatePicker, nếu bạn muốn tiết kiệm không gian của ứng dụng hãy sử dụng DatePickerDialog.
DatePickerDialog được tạo ra trong thời gian chạy của ứng dụng, khi mà người dùng cần nó để chọn một ngày tháng (Date). Bạn có thể tạo và hiển thị nó bằng mã Java:
DatePickerDialog (Calendar Mode) (Default)
int selectedYear = 2000; int selectedMonth = 5; int selectedDayOfMonth = 10; // Date Select Listener. DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { editTextDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year); } }; // Create DatePickerDialog (Spinner Mode): DatePickerDialog datePickerDialog = new DatePickerDialog(this, dateSetListener, selectedYear, selectedMonth, selectedDayOfMonth); // Show datePickerDialog.show();

DatePickerDialog (Spinner Mode)
int selectedYear = 2000; int selectedMonth = 5; int selectedDayOfMonth = 10; // Date Select Listener. DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { editTextDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year); } }; // Create DatePickerDialog (Spinner Mode): DatePickerDialog datePickerDialog = new DatePickerDialog(this, android.R.style.Theme_Holo_Light_Dialog_NoActionBar, dateSetListener, selectedYear, selectedMonth, selectedDayOfMonth); // Show datePickerDialog.show();

Xem trước ví dụ:

Calendar Mode

Spinner Mode
Trên Android Studio tạo mới một project:
- File > New > New Project > Empty Activity
- Name: DatePickerDialogExample
- Package name: org.o7planning.datepickerdialogexample
- Language: Java
Giao diện của ứng dụng:

activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <EditText android:id="@+id/editText_date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginLeft="16dp" android:layout_marginTop="90dp" android:ems="10" android:inputType="date" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/button_date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginLeft="16dp" android:layout_marginTop="90dp" android:text="Select Date" app:layout_constraintStart_toEndOf="@+id/editText_date" app:layout_constraintTop_toTopOf="parent" /> <CheckBox android:id="@+id/checkBox_isSpinnerMode" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginLeft="16dp" android:layout_marginTop="16dp" android:text="Spinner Mode?" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/editText_date" /> </androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package org.o7planning.datepickerdialogexample; import androidx.appcompat.app.AppCompatActivity; import android.app.DatePickerDialog; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.DatePicker; import android.widget.EditText; import java.util.Calendar; public class MainActivity extends AppCompatActivity { private EditText editTextDate; private Button buttonDate; private CheckBox checkBoxIsSpinnerMode; private int lastSelectedYear; private int lastSelectedMonth; private int lastSelectedDayOfMonth; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.editTextDate = (EditText) this.findViewById(R.id.editText_date); this.buttonDate = (Button) this.findViewById(R.id.button_date); this.checkBoxIsSpinnerMode = this.findViewById(R.id.checkBox_isSpinnerMode); this.buttonDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { buttonSelectDate(); } }); // Get Current Date final Calendar c = Calendar.getInstance(); this.lastSelectedYear = c.get(Calendar.YEAR); this.lastSelectedMonth = c.get(Calendar.MONTH); this.lastSelectedDayOfMonth = c.get(Calendar.DAY_OF_MONTH); } // User click on 'Select Date' button. private void buttonSelectDate() { final boolean isSpinnerMode = this.checkBoxIsSpinnerMode.isChecked(); // Date Select Listener. DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { editTextDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year); lastSelectedYear = year; lastSelectedMonth = monthOfYear; lastSelectedDayOfMonth = dayOfMonth; } }; DatePickerDialog datePickerDialog = null; if(isSpinnerMode) { // Create DatePickerDialog: datePickerDialog = new DatePickerDialog(this, android.R.style.Theme_Holo_Light_Dialog_NoActionBar, dateSetListener, lastSelectedYear, lastSelectedMonth, lastSelectedDayOfMonth); } // Calendar Mode (Default): else { datePickerDialog = new DatePickerDialog(this, dateSetListener, lastSelectedYear, lastSelectedMonth, lastSelectedDayOfMonth); } // Show datePickerDialog.show(); } }