对android有简单接触的人都知道android有自带的时间选择器DatepickerDialog,本人最近用到这个时发现一个问题,就是在某些手机上这个选择器的月份上有个月字,在我们的测试人员测试时这块出了问题,假如你把月跟数字之间的空格删除,就会导致不能输入,假如你仅仅删除了数字,再输入一个数字时又会出现一个月,就导致俩月字,这样的情况再点确定时系统会默认给你1月份,这样就会失去我们想要的效果。虽然没有报错,但我们还是希望自己选择的5月就是5月。既然系统的不靠谱了,那么我们只能自己去写一个控件来实现了。基于现在齿轮效果的流行,我在网上搜罗了不少资料,最终给大家总结了一个最简单的方式,只需要一个按钮跟一个文本框来实现。截图效果如下:
效果明了。接下来看代码:
public class MainActivity extends Activity {
private TextView text;
private Calendar calendarSet;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
LinearLayout l = new LinearLayout(this);
Button btn = new Button(this);
text = new TextView(this);
l.addView(text);
l.addView(btn);
btn.setText("时间测试");
setContentView(l);
calendarSet = Calendar.getInstance();
calendarSet.set(2014, 0, 1, 0, 00, 00);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String time = text.getText().toString();
if (!TextUtils.isEmpty(time)) {
calendarSet.set(Integer.valueOf(time.substring(0,
time.indexOf("年"))),
Integer.valueOf(time.substring(
time.indexOf("年") + 1, time.indexOf("月")))-1,
Integer.valueOf(time.substring(
time.indexOf("月") + 1, time.indexOf("日"))),
Integer.valueOf(time.substring(
time.indexOf("日") + 1, time.indexOf("时"))),
Integer.valueOf(time.substring(
time.indexOf("时") + 1, time.indexOf("分"))),
00);
}
new MyDateTimePickerDialog(MainActivity.this, 1914, 2014,
calendarSet, new OnDateTimeSetListener() {
@Override
public void onDateTimeSet(int year,
int monthOfYear, int dayOfMonth, int hour,
int minute) {
text.setText(year + "年" + monthOfYear + "月"
+ dayOfMonth + "日" + hour + "时"
+ minute + "分");
}
}).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
1914, 2014 这两个数字代表你让用户选择的年份范围,根据情况而定,比如我们的软件才出道一年多,所以都给两年的选择时间,就传入2013,2014.如果是生日,也不必你主动去判断大小,只需要在这里控制一下,用户也不可能选择到其它年份。在实际运用中还涉及了时间的判断,如果录入提醒的东西,肯定是要比当前时间靠后的,比如要输入生日,肯定是要比当前时间靠前的,人不可能生在未来穿梭回来吧。
话就这么多,接下来给一个源代码的下载地址,有需要的朋友可去荡下来自己研究。
http://download.csdn.net/detail/u013936108/7521069