用EditText和DatePicker制作的日期选择器

在Android开发中,我们经常会遇到选择日期的文本框,点击后用来选择日期时间,这个选择日期的实现方式有很多种,本文介绍一种用EditText和DatePicker制作的选择日期的编辑框,下面我们直接看待吗如何实现.

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

private EditText sellStartTime;
private EditText sellEndTime;

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

  1. 日期选择器函数

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值