利用Android应用框架提供的DatePicker(日期选择器)和TimePicker(时间选择器),实现日期时间选择器。

Dialog的Content布局文件(date_time_dialog.xml):

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical"

android:padding="10dip" >

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:singleLine="true"

android:text="请选择日期"

android:textColor="#FFFFFF"

android:textSize="16sp" />

android:id="@+id/date_picker"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="5dip" />

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_marginTop="10dip"

android:singleLine="true"

android:text="请选择时间"

android:textColor="#FFFFFF"

android:textSize="16sp" />

android:id="@+id/time_picker"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="5dip" />

代码中的实现:

package com.easipass.test;

import java.util.Calendar;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.Dialog;

import android.content.DialogInterface;

import android.os.Bundle;

import android.text.InputType;

import android.view.MotionEvent;

import android.view.View;

import android.widget.DatePicker;

import android.widget.EditText;

import android.widget.TimePicker;

/**

* 功能描述:实现日期时间选择器

*

* @author android_ls

*/

public class DateTimeActivity extends Activity implements View.OnTouchListener {

private EditText etStartTime;

private EditText etEndTime;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

etStartTime = (EditText) this.findViewById(R.id.et_start_time);

etEndTime = (EditText) this.findViewById(R.id.et_end_time);

etStartTime.setOnTouchListener(this);

etEndTime.setOnTouchListener(this);

}

@Override

public boolean onTouch(View v, MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN) {

AlertDialog.Builder builder = new AlertDialog.Builder(this);

View view = View.inflate(this, R.layout.date_time_dialog, null);

final DatePicker datePicker = (DatePicker) view.findViewById(R.id.date_picker);

final TimePicker timePicker = (android.widget.TimePicker) view.findViewById(R.id.time_picker);

builder.setView(view);

Calendar cal = Calendar.getInstance();

cal.setTimeInMillis(System.currentTimeMillis());

datePicker.init(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), null);

timePicker.setIs24HourView(true);

timePicker.setCurrentHour(cal.get(Calendar.HOUR_OF_DAY));

timePicker.setCurrentMinute(Calendar.MINUTE);

if (v.getId() == R.id.et_start_time) {

final int inType = etStartTime.getInputType();

etStartTime.setInputType(InputType.TYPE_NULL);

etStartTime.onTouchEvent(event);

etStartTime.setInputType(inType);

etStartTime.setSelection(etStartTime.getText().length());

builder.setTitle("选取起始时间");

builder.setPositiveButton("确 定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

StringBuffer sb = new StringBuffer();

sb.append(String.format("%d-%02d-%02d",

datePicker.getYear(),

datePicker.getMonth() + 1,

datePicker.getDayOfMonth()));

sb.append(" ");

sb.append(timePicker.getCurrentHour())

.append(":").append(timePicker.getCurrentMinute());

etStartTime.setText(sb);

etEndTime.requestFocus();

dialog.cancel();

}

});

} else if (v.getId() == R.id.et_end_time) {

int inType = etEndTime.getInputType();

etEndTime.setInputType(InputType.TYPE_NULL);

etEndTime.onTouchEvent(event);

etEndTime.setInputType(inType);

etEndTime.setSelection(etEndTime.getText().length());

builder.setTitle("选取结束时间");

builder.setPositiveButton("确 定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

StringBuffer sb = new StringBuffer();

sb.append(String.format("%d-%02d-%02d",

datePicker.getYear(),

datePicker.getMonth() + 1,

datePicker.getDayOfMonth()));

sb.append(" ");

sb.append(timePicker.getCurrentHour())

.append(":").append(timePicker.getCurrentMinute());

etEndTime.setText(sb);

dialog.cancel();

}

});

}

Dialog dialog = builder.create();

dialog.show();

}

return true;

}

}

运行后的效果图:

1362576811_7530.png

点击EditTet之后

1362576972_3900.png

点击确定之后

1362577127_6203.png

来源:https://www.cnblogs.com/tianciliangen/p/4018362.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐