• 【Android学习】日期和时间选择对话框


    实现功能

    实现日期和时间选择的对话框,具体效果可看下图(以日期为例)

    在这里插入图片描述

    具体代码

    1 日期对话框

    1.1 xml
    
    <LinearLayout 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"
        android:orientation="vertical"
        android:gravity="center">
        <DatePicker
            android:id="@+id/datePicker"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:calendarViewShown="false"
            android:datePickerMode="spinner"
            />
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center"
            android:padding="10dp">
        <Button
            android:id="@+id/btn_date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="选择日期"/>
        <Button
            android:id="@+id/btn_ok"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="确定"/>
        LinearLayout>
        <TextView
            android:id="@+id/tv_date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="尚未选择"
            android:textSize="20sp"/>
    LinearLayout>
    
    1.2 Java
    package com.example.learn;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.app.DatePickerDialog;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.DatePicker;
    import android.widget.TextView;
    
    import java.util.Calendar;
    
    public class DatePickerActivity extends AppCompatActivity implements View.OnClickListener, DatePickerDialog.OnDateSetListener {
        private TextView tv;
        private DatePicker dp;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_date_picker);
            findViewById(R.id.btn_ok).setOnClickListener(this);
            findViewById(R.id.btn_date).setOnClickListener(this);
            tv=findViewById(R.id.tv_date);
            dp = findViewById(R.id.datePicker);
        }
    
        @Override
        public void onClick(View view) {
            switch(view.getId()){
                case R.id.btn_ok:
                    String desc=String.format("%d年%d月%d日",dp.getYear(),dp.getMonth()+1,dp.getDayOfMonth());
                    tv.setText(desc);
                    break;
                case R.id.btn_date:
                    //获取当前时间
                    Calendar now = Calendar.getInstance();
                    DatePickerDialog dpd = new DatePickerDialog(this,this,now.get(Calendar.YEAR),now.get(Calendar.MONTH),now.get(Calendar.DAY_OF_MONTH));
                    //显示
                    dpd.show();
                    break;
            }
        }
    
        @Override
        public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
            String desc=String.format("%d年%d月%d日",i,i1+1,i2);
            tv.setText(desc);
        }
    }
    

    2 时间选择对话框

    2.1 xml
    
    <LinearLayout 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"
        android:orientation="vertical"
        android:gravity="center">
        <TimePicker
            android:id="@+id/timePicker"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:timePickerMode="spinner"
            />
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center"
            android:padding="10dp">
            <Button
                android:id="@+id/btn_time"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="选择时间"/>
            <Button
                android:id="@+id/btn_ok"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="确定"/>
        LinearLayout>
        <TextView
            android:id="@+id/tv_date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="尚未选择"
            android:textSize="20sp"/>
    LinearLayout>
    
    2.2 java
    package com.example.learn;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.app.TimePickerDialog;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.DatePicker;
    import android.widget.TextView;
    import android.widget.TimePicker;
    
    import java.util.Calendar;
    
    public class TimePickerActivity extends AppCompatActivity implements View.OnClickListener, TimePickerDialog.OnTimeSetListener {
        private TextView tv;
        private TimePicker tp;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_time_picker);
            findViewById(R.id.btn_ok).setOnClickListener(this);
            findViewById(R.id.btn_time).setOnClickListener(this);
            tv=findViewById(R.id.tv_date);
            tp = findViewById(R.id.timePicker);
        }
    
        @Override
        public void onClick(View view) {
            switch(view.getId()){
                case R.id.btn_ok:
                    String desc=String.format("%d时%d分",tp.getCurrentHour(),tp.getCurrentMinute());
                    tv.setText(desc);
                    break;
                case R.id.btn_time:
                    //获取日历实例,包含日期和时分
                    Calendar instance = Calendar.getInstance();
                    //构建时间对话框
    //                TimePickerDialog tpd = new TimePickerDialog(this,this,
    //                        instance.get(Calendar.HOUR_OF_DAY),
    //                        instance.get(Calendar.MINUTE),
    //                        true);
                    //添加样式
                    TimePickerDialog tpd = new TimePickerDialog(this, android.R.style.Theme_Holo_Dialog,this,
                            instance.get(Calendar.HOUR_OF_DAY),
                            instance.get(Calendar.MINUTE),
                            true);
                    tpd.show();
                    break;
            }
        }
    
        @Override
        public void onTimeSet(TimePicker timePicker, int i, int i1) {
            String desc=String.format("%d时%d分",i,i1);
            tv.setText(desc);
        }
    }
    
  • 相关阅读:
    SpringMVC返回不带引号的字符串方案汇总
    如何在 SAP ABAP ALV 报表里以交通灯的方式显示某一列的值
    3d360全景家具展厅制作的优势盘点
    云计算基础知识
    OKR之剑(理念篇)01—— OKR带给我们的改变
    15经验模态分解及其改进程序,EMD,EEMD, CEEMDAN,三合一程序,已调试完成,替换自己数据可直接跑。
    2023年8月京东冰箱行业品牌销售排行榜(京东数据挖掘)
    剑指offer 14. 二进制中1的个数
    FPGA板卡启动以及LED灯带调试
    计算机网络---第一章
  • 原文地址:https://blog.csdn.net/qq_29750461/article/details/138451913