iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
Mobile Development

Android Studio - 30天菜鳥筆記系列 第 16

Android Studio菜鳥筆記 - Day16 - DatePicker

  • 分享至 

  • xImage
  •  

DatePicker是個日期選擇器,APP裡要查看日期或是預約等等利用這個元件可以讓使用者方便去操作,廢話不多說我們就直接實作。

簡單布局:

新增了一個Button與一個EditText
Button用來叫出我們的日期選擇器
EditText則是用來顯示被點選的日期

<?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">

    <Button
        android:id="@+id/button_date"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:background="@drawable/bt_style"
        android:text="..."
        android:textColor="#000000"
        android:textSize="25dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.795"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.113" />

    <EditText
        android:id="@+id/edit_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:ems="10"
        android:focusableInTouchMode="false"
        android:inputType="textPersonName"
        android:minHeight="48dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.318"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.113" />
</androidx.constraintlayout.widget.ConstraintLayout>

程式碼:

Calendar為設定日期格式
首先要用Calendar.getInstance()取得現在初始時間
再建立DatePickerDialog.OnDateSetListener日期選擇器監聽用來取得點選日期
點選到的日期會分為三個參數給你依順序分別為年、月、日
將三個參數存取後放入設好的SimpleDateFormat格式化輸出
讓日期可以用自己想要的格式顯示出來
最後創建一個Button點擊,點擊後用來打開日期選擇器(DatePickerDialog)

package com.example.datepicker_demo;

import androidx.appcompat.app.AppCompatActivity;

import android.app.DatePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;

public class MainActivity extends AppCompatActivity {
    DatePickerDialog.OnDateSetListener datePicker;
    Calendar calendar;
    EditText edit_date;
    Button button_date;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        edit_date = findViewById(R.id.edit_date);
        button_date = findViewById(R.id.button_date);
        calendar = Calendar.getInstance();
        datePicker = new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
                calendar.set(Calendar.YEAR, i);
                calendar.set(Calendar.MONTH , i1);
                calendar.set(Calendar.DAY_OF_MONTH, i2);
                String myFormat = "yyyy年MM月dd日";
                SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.TAIWAN);
                edit_date.setText(sdf.format(calendar.getTime()));
            }
        };
        button_date.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                DatePickerDialog dialog = new DatePickerDialog(MainActivity.this,
                        datePicker,
                        calendar.get(Calendar.YEAR),
                        calendar.get(Calendar.MONTH),
                        calendar.get(Calendar.DAY_OF_MONTH));
                dialog.show();
            }
        });
    }
}

執行結果:



上一篇
Android Studio菜鳥筆記 - Day15 - ToolBar
下一篇
Android Studio菜鳥筆記 - Day17 - ListView
系列文
Android Studio - 30天菜鳥筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言