一个可以选择日期的弹出框(附在EditText)
来源:互联网 发布:it年薪 编辑:程序博客网 时间:2024/05/16 18:53
弹出框的配置:
public class DateTimePicker { private Button doneBtn; private Button cancelBtn; private Context mContext; private String dateTimeString; private OnSelectDoneListener mListner; private onDismissListener dismissListener; private DateTimePicker me; private LinearLayout picker; private PopupWindowFromBottom menuWindow; private View mParentView; private TextView lastView; DatePicker datePicker; TimePicker timePicker; WindowManager wm; int screenWidth; /*** * 构造方法 * @param context * @param parentView 父view */ public DateTimePicker(Context context, View parentView) { me = this; mContext = context; mParentView = parentView; picker = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.datetimepicker, null); doneBtn = (Button) picker.findViewById(R.id.picker_done); cancelBtn = (Button) picker.findViewById(R.id.picker_cancel); menuWindow = new PopupWindowFromBottom(context, picker, 0); datePicker = (DatePicker) picker.findViewById(R.id.datepicker); timePicker = (TimePicker) picker.findViewById(R.id.timepicker); timePicker.setIs24HourView(true); bindBtnsEvent(); } private void bindBtnsEvent() { doneBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String date = datePicker.getYear() + "." + datePicker.getMonth() + "." + datePicker.getDayOfMonth() + " " + timePicker.getCurrentHour() + ":" + plus0(timePicker.getCurrentMinute()); mListner.onSelectDone(date); menuWindow.dismiss(); } }); cancelBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { menuWindow.dismiss(); } }); } public void show() { if (!menuWindow.isShowing()) { menuWindow.showAtLocation(mParentView, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); //设置layout在PopupWindow中显示的位置 } } /*** * 供外部调用 * @param listener */ public void setOnSelectDoneListener(OnSelectDoneListener listener) { mListner = listener; } public void setDismissListener(onDismissListener dismissListener) { this.dismissListener = dismissListener; } public interface OnSelectDoneListener { void onSelectDone(String date); } public interface onDismissListener { void onDismiss(); } private class PopupWindowFromBottom extends PopupWindow { Context context; public PopupWindowFromBottom(Context context, final View view, int height) { super(context); this.context = context; LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); //设置SelectPicPopupWindow的View this.setContentView(view); //设置SelectPicPopupWindow弹出窗体的宽 this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT); //设置SelectPicPopupWindow弹出窗体的高 if (height == 0) { this.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); } else { this.setHeight(height); } //设置SelectPicPopupWindow弹出窗体可点击 this.setFocusable(true); //实例化一个ColorDrawable颜色为半透明 ColorDrawable dw = new ColorDrawable(0xb0000000); //设置SelectPicPopupWindow弹出窗体的背景 this.setBackgroundDrawable(dw); //mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框 view.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { int height = view.findViewById(R.id.picker_cancel).getTop(); int y = (int) event.getY(); if (event.getAction() == MotionEvent.ACTION_UP) { if (y < height) { dismiss(); } } return true; } }); } @Override public void dismiss() { super.dismiss(); if (dismissListener != null) dismissListener.onDismiss(); } @Override public void showAtLocation(View parent, int gravity, int x, int y) { super.showAtLocation(parent, gravity, x, y); } } String plus0(int num) { if (num < 10) { return "0" + num; } return num + ""; }}
怎么调用:
editText.setFocusable(false);editText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { picker.show(); editText.setFocusable(true); editText.setFocusableInTouchMode(true); editText.requestFocus(); editText.setFocusable(false); editText.setFocusableInTouchMode(false); }});picker = new DateTimePicker(getContext(), ((V8Activity) getContext()).getRootView());picker.setOnSelectDoneListener(new DateTimePicker.OnSelectDoneListener() { @Override public void onSelectDone(String date) { editText.setText(date); }});picker.setDismissListener(new DateTimePicker.onDismissListener() { @Override public void onDismiss() { }});
0 0
- 一个可以选择日期的弹出框(附在EditText)
- 实现单击EditText弹出日期选择框
- 安卓点击EditText,弹出日期选择界面,选择日期,返回给EditText
- 安卓点击EditText,弹出日期选择界面,选择日期,返回给EditText
- 还是mui的日期选择插件使用,可以在弹出日期选择之前提问他是否想修改
- 简单的实现EditText点击实现日期选择弹框
- android 弹出日期选择框
- android 弹出日期选择框
- 简单的日期选择控件的实现(弹出日历,选择日期)
- 一个不错的日期选择框
- 封装一个可以控制字数的编辑器(EditText)!
- js弹出可以选择是否的对话框
- presentViewController弹出有几种可以选择的类型
- mui日期选择插件自定义可以选择的结束日期
- jQuery日期弹出选择框Datepicker效果
- 安卓点击Edittext弹出对话框实现操作(DatePicker,实现日期的输入)隐藏键盘
- 弹出选择日期效果(一)特效代码
- 弹出日期选择
- YYKit学习笔记
- [转载]Node.js模块化机制原理探究
- goahead v3.6.3版本移植成功
- 高斯列主消元
- “超人”为什么最后1秒拯救地球?
- 一个可以选择日期的弹出框(附在EditText)
- POI报表导入导出
- Git11--创建与合并分支
- JavaScript的变量
- netbeans 错误解决
- 几种常见架构模式
- Linux运维笔记-文档总结-系统虚拟机管理
- 常用网站
- IOS开发之UIScrollViewDelegate详解