自定义时间选择器

这篇博客分享了在项目中遇到官方DatePicker和TimePicker不足的问题,作者自行实现了自定义时间选择器DateTimeDialog,并提供了基类BaseDialog的代码。文章包含实现效果的展示和关键代码片段。
摘要由CSDN通过智能技术生成

最近项目需要用到时间选择器,官方给的DatePicker和TimePicker有许多问题,没办法自己只好动手

NumberPicker实现简单的时间选择器,代码如下:

实现效果图:


实现代码:

自定义时间选择器DateTimeDialog.java

package cn.zszh.customs.widget;


import java.util.Calendar;
import java.util.Locale;

import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.NumberPicker;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import cn.zszh.customs.widget.base.BaseDialog;

/**
 * 自定义时间选择器
 * @author Administrator
 *
 */
public class DateTimeDialog extends BaseDialog{
	private Calendar mCalendar=Calendar.getInstance(Locale.CHINA);

	private NumberPicker mYearNumberPicker;//年
	private NumberPicker mMonthNumberPicker;//月
	private NumberPicker mDayNumberPicker;//日
	private NumberPicker mHourNumberPicker;//时
	private NumberPicker mMinuteNumberPicker;//分
	private NumberPicker[] mDatePickers={mYearNumberPicker,mMonthNumberPicker,mDayNumberPicker};
	private NumberPicker[] mTimePickers={mHourNumberPicker,mMinuteNumberPicker};
	private String[] 	dates={"年","月","日"};
	private String[] 	times={"时","分"};
	//保存当前选中的时间
	private int mSelectYear,mSelectMonth,mSelectDate,mSelectHour,mSelectMinute;

	private TextView mCancel;
	private TextView mOK;
	private OnClickListener mListener;
	//保存是否显示日期和时间
	private boolean mShowDate;
	private boolean mShowTime;

	public DateTimeDialog(Context context) {
		this(context,true,true);

	}
	public DateTimeDialog(Context context,boolean showDate,boolean showTime){
		super(context);
		mShowDate=showDate;
		mShowTime=showTime;
		mCreateView=initView();
		initData();
		initEvent();
	}
	@Override  
	protected void onCreate(Bundle savedInstanceState) {  
		super.onCreate(savedInstanceState);  
		//设置Dialog没有标题。需在setContentView之前设置,在之后设置会报错  
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);  
		//设置Dialog背景透明效果,必须设置一个背景,否则会有系统的Dialog样式:外部白框  
		this.getWindow().setBackgroundDrawableResource(android.R.color.transparent);  
		setContentView(mCreateView);//添加视图布局  
		initLayout();
	}  
	private void initLayout(){
		WindowManager.LayoutParams params=getWindow().getAttributes();
		params.width=mScreenWidth;
		params.gravity=Grav
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值