NumberPicker实现简单的时间选择器,代码如下:最近项目需要用到时间选择器,官方给的DatePicker和TimePicker有许多问题,没办法自己只好动手
实现效果图:
实现代码:
自定义时间选择器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