edittext响应事件用onclick点击第一次会先获取焦点,第二次才响应事件,这个思路需要处理焦点事件比较繁琐,因此我们用ontouch事件,会发现用ontouch事件点击的时候,会发现响应三次事件,三次是因为ontouch有up down cancel三次 我们只需要在down中做自己要实现的事件就可以了,代码如下:
edittext.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==MotionEvent.ACTION_DOWN){
DateTimer.onCreateDialog(context, edittext).show();
}
return false;
}
});
DataTimer是自己封装好的调用系统时间的类 代码如下:
package com.tyb.tools;
import java.util.Calendar;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.content.Context;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
/**
* 时间控件
*/
public class DateTimer {
// 创建日期选择框
public static Dialog onCreateDialog(final Context context,final EditText tv_show) {
// 用来获取日期和时间的
Calendar calendar = Calendar.getInstance();
Dialog dialog = null;
DatePickerDialog.OnDateSetListener dateListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month,
int dayOfMonth) {
// Calendar月份是从0开始,所以month要加1
tv_show.setText(year + "-" + (month + 1) + "-" + dayOfMonth);
}
};
dialog = new DatePickerDialog(context, dateListener,
calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
return dialog;
}
}