android 自定义日期输入 EditText

对应的日历图片

EditTextWithDate.java

package com.chinaunicom.yczft.util;

import java.util.Calendar;

import android.app.DatePickerDialog;
import android.content.Context;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.DatePicker;
import android.widget.EditText;

import com.chinaunicom.yczft.R;
/**
 * @2014-12-09 10:58:24
 * @author lxg
 *
 */
public class EditTextWithDate extends EditText {
	 private final static String TAG = "EditTextWithDate"; 
	 private Drawable dateIcon;  
     private Context mContext; 
 	 private Calendar c;
 	 private int mYear;
 	 private int mMonth;
 	 private int mDay;
 	 private boolean datePickerEnabled=true;
 	 
	public EditTextWithDate(Context context) {
		super(context);
		mContext=context;
		init();
	}
	
	public EditTextWithDate(Context context,AttributeSet attrs) {
		super(context,attrs);
		mContext=context;
		init();
	}

	public EditTextWithDate(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		mContext = context;
		init();
	}
	 private void init() {
		 dateIcon=mContext.getResources().getDrawable(R.drawable.date);  
		 dateIcon.setBounds(-11, 0, 70, 70);
		 setCompoundDrawables(null, null, dateIcon, null);
//		  setCompoundDrawablesWithIntrinsicBounds(null, null, dateIcon, null);
		    c = Calendar.getInstance();
			final Calendar cal =Calendar.getInstance(); 
			mYear = cal.get(Calendar.YEAR); // 获取当前年份
			mMonth = cal.get(Calendar.MONTH);// 获取当前月份 
			mDay = cal.get(Calendar.DAY_OF_MONTH);// 获取当前月份的日期号码 
			this.setEnabled(false);
	 }

	 @Override  
	 public boolean onTouchEvent(MotionEvent event) {  
	     if (dateIcon != null && event.getAction() == MotionEvent.ACTION_UP) {  
	           int eventX = (int) event.getRawX();  
	           int eventY = (int) event.getRawY();  
	            Log.e(TAG, "eventX = " + eventX + "; eventY = " + eventY);  
               Rect rect = new Rect();  
	           getGlobalVisibleRect(rect);  
	            rect.left = rect.right - 81;  
	           if(rect.contains(eventX, eventY)){
	        	   if(datePickerEnabled){
	        	   new DatePickerDialog(mContext, new DatePickerDialog.OnDateSetListener() {

						public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
							mYear = year;
							mMonth = monthOfYear;
							mDay = dayOfMonth;
							setText(new StringBuilder().append("").append(mYear).append("-").append(mMonth + 1).append("-").append(mDay).append(""));

						}

					}, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)).show();
	        	   }
	           }
	       }  
	       return super.onTouchEvent(event);  
	    }

	public boolean isDatePickerEnabled() {
		return datePickerEnabled;
	}

	public void setDatePickerEnabled(boolean datePickerEnabled) {
		this.datePickerEnabled = datePickerEnabled;
		if(!datePickerEnabled){
			setText("");
		}
	}  

}


布局文件

<com.chinaunicom.yczft.util.EditTextWithDate
                        android:id="@+id/limitedDate"
                        android:layout_width="200dp"
                        android:layout_height="38dp"
                        android:layout_marginLeft="8dp"
                        android:paddingLeft="8dp"
                        android:hint="请点击右侧日历选择"
                        android:background="@drawable/inputb2j" 
                         android:textColor="@drawable/Color_white"/>


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值