展会信息港展会大全

Android EditText+DatePicker带日期选择器的编辑框
来源:互联网   发布日期:2016-01-14 12:24:26   浏览:2981次  

导读:1. 声明EditText变量,并关联到相应控件上private EditText sellStartTime;private EditText sellEndTime;...sellStartTime = (EditText)findViewById(R.id.editSellStartTime);sellEndTime = (EditTex......

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

赞助本站

人工智能实验室

相关热词: EditText DatePicker 日期

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港