Android 自定义时间日期选择器?

Posted yyxhzdm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 自定义时间日期选择器?相关的知识,希望对你有一定的参考价值。

效果图:

          

1.主要引用 checkdate

//添加自定义日期选择
implementation project(path: ':checkdate')

2.activity调用

package com.ruidde.csdntestdemo;

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import com.zdmtech.checkdate.builder.TimePickerBuilder;
import com.zdmtech.checkdate.listener.OnTimeSelectListener;
import com.zdmtech.checkdate.utils.DateUtil;
import com.zdmtech.checkdate.view.TimePickerView;
import com.zdmtech.checkdate.view.WheelTime;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class MainActivity extends AppCompatActivity 
    private Context mContext;
    private TextView tv_content;
    private Button btn_picker;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext = this;
        initView();
        initDate();

    

    public void initView() 
        tv_content = findViewById(R.id.tv_content);
        btn_picker = findViewById(R.id.btn_picker);
    

    @SuppressLint("SimpleDateFormat")
    Calendar calendar ;
    public void initDate()
        /**
         * 自定义结束时间
         * */
//        String str="2022-06-24";
//        SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
//        try 
//            Date date = sdf.parse(str);
//            calendar = Calendar.getInstance();
//            calendar.setTime(date);
//         catch (ParseException e) 
//            e.printStackTrace();
//        
        /**
         * 自定义开始结束时间
         * */
//        WheelTime.DEFAULT_START_YEAR = 2000;
//        WheelTime.DEFAULT_END_YEAR = 2050;

        btn_picker.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 
                boolean[] arr = new boolean[]true, true, true, true, true, false;
                Calendar startDate = Calendar.getInstance();
                startDate.add(Calendar.YEAR, -5); //当前年数减去的值后作为开始年数
                Calendar endDate = Calendar.getInstance();
                TimePickerView pickerView = new TimePickerBuilder(mContext, new OnTimeSelectListener() 
                    @Override
                    public void onTimeSelect(Date date, View v) 
                        String eventTime = DateUtil.dateToString(date, DateUtil.YMDHM);
                        tv_content.setText(eventTime);
                    
                ).setType(arr)
                        .isCyclic(false) //是否循环
                        .setDate(endDate)
                        .setRangDate(startDate, endDate) //不设置隐藏该项显示数据是自定义的开始与结束时间(1900-2100)
//                        .setRangDate(startDate, calendar) //calendar自定义结束日期
                        .build();
                pickerView.show();
            
        );
    

3.如果设置当日时间为全天而不是到当前时间可以在

中做修改

 else  //年份发生变化
      int dateMonth = (Calendar.getInstance().get(Calendar.MONTH)+1);
      int dateDay = Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
      int dateHourse = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
      int dateMinute = Calendar.getInstance().get(Calendar.MINUTE);
      int currentMonth = (wv_month.getCurrentItem() + 1);
      int currentDay = (wv_day.getCurrentItem() + 1);
      if (currentMonth == dateMonth) //当月
          if (currentDay == dateDay) //当日
              wv_hours.setAdapter(new NumericWheelAdapter(0, dateHourse)); //设置的结束小时
              wv_minutes.setAdapter(new NumericWheelAdapter(0, dateMinute)); //设置的结束分钟
          else  //不同日
              wv_hours.setAdapter(new NumericWheelAdapter(0, 23));
              wv_minutes.setAdapter(new NumericWheelAdapter(0, 59));
          
      else  //不同月
          wv_hours.setAdapter(new NumericWheelAdapter(0, 23));
          wv_minutes.setAdapter(new NumericWheelAdapter(0, 59));
      

4.源码请点击链接下载:https://download.csdn.net/download/yyxhzdm/12888757

以上是关于Android 自定义时间日期选择器?的主要内容,如果未能解决你的问题,请参考以下文章

Android 自定义时间日期选择器?

如何制作适合另一个视图的自定义 Android 字符串选择器?

如何只用月份和年份字段显示android的日期选择器?

与活动风格不同的日期选择器

Android 自定义日历

Android 万年历日期选择器