自定义时间选择器

这篇博客分享了在项目中遇到官方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
### 回答1: WPF是一种强大的UI框架,它提供了许多控件,其中包括时间选择器控件。但是,由于在特定的应用程序中,需要自定义时间选择器以满足一些个性化需求。在这种情况下,可以使用WPF自定义控件来创建自己的时间选择器控件。 首先,在WPF中创建时间选择器控件,需要使用Calendar控件和TimePicker控件。Calendar控件用于显示日期,而TimePicker控件用于选择时间时间选择器控件的主体是StackPanel控件。在StackPanel控件中添加了两个控件Calendar和TimePicker,以实现时间选择器的基本功能。 然后,需要在时间选择器控件中定义一些附加属性,例如:选定日期、选定时间等等,以实现一些高级功能。 最后,为时间选择器控件添加样式,并实现一些触发器和动画效果,以使其外观和功能与应用程序的主题相匹配。 实现WPF自定义时间选择器可能需要一些时间和经验,但对于需要一个不寻常的时间选择器的应用程序来说,是值得的。 这样的时间选择器是用户友好的,具有很好的设计和功能,并且以C#编写,可以很容易地与WPF应用程序集成。 ### 回答2: WPF自定义时间选择器是一种功能强大、灵活性高的工具,它可以根据需求自行设计不同的选择器,可以实现小时、分钟、秒数的选择等多种功能。 首先,我们需要使用WPF自带的DatePicker控件和TimePicker控件来实现时间选择器。接下来,我们可以自定义控件的样式和模板,使其更符合我们的设计需求。 在自定义控件的样式时,我们需要设置控件的各个属性,比如控件的边框、背景、字体等。同时,我们可以通过设置样式来调整控件的布局和显示效果。 在时间选择器的实现中,需要涉及到一些比较复杂的计算,比如计算时间的差值、时间的格式转换等。我们可以使用C#中的DateTime类和TimeSpan类来实现这些功能。 最后对于自定义时间选择器的控件事件,需要自定义一些控件事件,使其更加符合我们的设计需求。比如增加或减少系统时钟里的时间。 总而言之,实现WPF自定义时间选择器需要对WPF控件、样式、模板、计算和控件事件等各个方面有深入的了解。只有掌握了这些知识,才能够设计出优秀的时间选择器,满足用户的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值