albon arith

一些总结,欢迎交流

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自动获取焦点,触发日期选择器。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hustspy1990/article/details/6727144
个人分类: Java Android
想对作者说点什么? 我来说一句

仿iOS带有星期几的日期时间选择器

2016年10月14日 21.47MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭