Android开发之日期选择对话框的使用

在Android开发中,日前选择对话框是比较常用的控件。

Android系统提供了日前选择对话框控件,不需要我们自己实现。

在Android中使用日期选择对话框控件需要以下几步:

1.创建DatePickerDialog.OnDateSetListener,当用户选择好日期后,单击Set按钮时触发。

2.创建DatePickerDialog对象。

3.调用showDialog(id)方法,显示日期选择对话框。

 

下面代码实现的功能是:如果输入框中没有日期,则弹出的对话框中显示当前的日期;如果有日期,则显示输入框中的日期。

完整代码:

布局文件datepicker.xml:

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
    <EditText 
    	android:id="@+id/datepicker_et"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    />
</LinearLayout>


Activity:

 

 

 

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.Dialog;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.DatePicker;
import android.widget.EditText;

import com.and.test.R;

public class DatePickerDialogActivity extends Activity {
	private EditText et = null;
	public final static int SHOW_DATEPICKER = 1;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.datepicker);
		et = (EditText) findViewById(R.id.datepicker_et);
		et.setOnTouchListener(new OnTouchListener() {
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				// 调用Activity的showDialog(id)方法显示日期选择对话框。
				showDialog(SHOW_DATEPICKER);
				return false;
			}
		});
	}
	
	// 复写Activity的onCreateDialog()方法,创建一个日期选择对话框
	// 点击输入框时,弹出日期选择对话框。
	// 如果输入框中有日期,则显示输入的日期;否则,显示当前日期。
	@Override
	protected Dialog onCreateDialog(int id) {
		switch(id) {
		case SHOW_DATEPICKER:
			int year,month,day;
			if (et.getText().toString() != null && et.getText().toString().matches("^\\d{4}-\\d{2}-\\d{2}$")) {
				year = Integer.valueOf(et.getText().toString().substring(0,3));
				month = Integer.valueOf(et.getText().toString().substring(5,6));
				day = Integer.valueOf(et.getText().toString().substring(8,9));
			}
			else {
				Calendar c = Calendar.getInstance();
				year = c.get(Calendar.YEAR);
				month = c.get(Calendar.MONTH);
				day = c.get(Calendar.DAY_OF_MONTH);
			}
			DatePickerDialog dp = new DatePickerDialog(this, dateChangeListener, year, month, day);
			return dp;
		}
		return null;
	}

	  // 事件监听。当用户选择好日期后,单击Set按钮时触发。
      // 这里用户选择好日期后,单击Set按钮,将用户选择的日期显示到输入框。
		DatePickerDialog.OnDateSetListener dateChangeListener = new OnDateSetListener() {
		@Override
		public void onDateSet(DatePicker view, int year, int monthOfYear,
				int dayOfMonth) {
			et.setText(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);
		}
	};
}


显示的效果:

 

 

输入框中没有日期时,显示当前的日期

当输入框中有日期时,显示输入框中的日期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值