一个可以选择日期的弹出框(附在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
原创粉丝点击