Android手机开发:EditText+DatePicker带日期选择器的编辑框

1. 声明EditText变量,并关联到相应控件上

private EditText sellStartTime;
private EditText sellEndTime;
sellStartTime = (EditText)findViewById(R.id.editSellStartTime);
sellEndTime = (EditText)findViewById(R.id.editSellEndTime);

2. 日期选择器函数

private DatePickerDialog.OnDateSetListener mDateSetListener =
            new DatePickerDialog.OnDateSetListener() {
				public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                    mYear = year;
                    String mm;
                    String dd;
                    if(monthOfYear<=9)
                    {
                    	mMonth = monthOfYear+1;
                    	mm="0"+mMonth;
                    }
                    else{
                    	mMonth = monthOfYear+1;
                    	mm=String.valueOf(mMonth);
                    	}
                    if(dayOfMonth<=9)
                    {
                    	mDay = dayOfMonth;
                    	dd="0"+mDay;
                    }
                    else{
                    	mDay = dayOfMonth;
                    	dd=String.valueOf(mDay);
                    	}
                    mDay = dayOfMonth;
                    if(timeFlag == 0) {
                    	sellStartTime.setText(String.valueOf(mYear)+"-"+mm+"-"+dd);
                    }else {
                    	sellEndTime.setText(String.valueOf(mYear)+"-"+mm+"-"+dd);
                    }
                }			
            };
   
    protected Dialog onCreateDialog(int id) {
    	switch (id) {	
        case 0:
        	return new DatePickerDialog(this,
                    mDateSetListener,
                    mYear, mMonth, mDay);
        case 1:
        	return new DatePickerDialog(this,
                    mDateSetListener,
                    mYear, mMonth, mDay);
        }
	    return null;
    }
    
    // 隐藏手机键盘
    private void hideIM(View edt){
        try {
             InputMethodManager im = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
             IBinder  windowToken = edt.getWindowToken();
             if(windowToken != null) {
                 im.hideSoftInputFromWindow(windowToken, 0);
             }
         } catch (Exception e) {
           
         }
     }

3. 注册监听器,当EditText获得焦点时,或者被点击时,打开日期选择器

                sellStartTime.setOnClickListener(new OnClickListener(){
	                public void onClick(View v) {
	        	        timeFlag = 0;
	        	        showDialog(0);
			}
	        });
		sellEndTime.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				timeFlag = 1;
				showDialog(1);
			}			
		});
		sellStartTime.setOnFocusChangeListener(new OnFocusChangeListener() {
			public void onFocusChange(View v, boolean hasFocus) {
				if (hasFocus == true) {
					timeFlag = 0;
					hideIM(v);
					showDialog(0);  
				}
			}
		});

		sellEndTime.setOnFocusChangeListener(new OnFocusChangeListener() {
			public void onFocusChange(View v, boolean hasFocus) {
				if (hasFocus == true) {
					timeFlag = 1;
					hideIM(v);
					showDialog(1);  
				}
			}
		});

4. 在包含EditText的LinearLayout中,添加语句

android:focusable="true"  android:focusableInTouchMode="true"

这句话,是为了防止EditText自动获取焦点,触发日期选择器。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值