openplanning

Hướng dẫn và ví dụ Android DatePickerDialog

Xem thêm các chuyên mục:

Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người.
Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.
Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

1- Android DatePickerDialog

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 DatePickerDialogDatePicker, 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();

2- Ví dụ DatePickerDialog

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();
    }
}

Xem thêm các chuyên mục: