解决dialog中edittext点击两次才响应事件的问题

     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;
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值