android5.0时间选择器,Android中实现日期时间选择器(DatePicker和TimePicker)

本文详细介绍了如何在Android应用中使用DatePicker和TimePicker创建自定义日期时间选择器,并处理了Dialog的布局和触摸事件。作者还分享了TimePicker布局调整技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用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;

}

}

运行后的效果图:

L3Byb3h5L2h0dHAvaW1nLm15LmNzZG4ubmV0L3VwbG9hZHMvMjAxMzAzLzA2LzEzNjI1NzY4MTFfNzUzMC5wbmc=.jpg

点击EditTet之后

L3Byb3h5L2h0dHAvaW1nLm15LmNzZG4ubmV0L3VwbG9hZHMvMjAxMzAzLzA2LzEzNjI1NzY5NzJfMzkwMC5wbmc=.jpg

点击确定之后

L3Byb3h5L2h0dHAvaW1nLm15LmNzZG4ubmV0L3VwbG9hZHMvMjAxMzAzLzA2LzEzNjI1NzcxMjdfNjIwMy5wbmc=.jpg

日期 时间选择器(DatePicker和TimePicker)实现用户选择

日期和时间 作者的设计TimePicker时,大小分布不合理,我调整宽度为match-parent高度为wrap-parent就可以了. public class MainActivity exten ...

Android日期时间选择器DatePicker、TimePicker日期时间改变事件响应(Android学习笔记)

activity_main.xml

jqure 获取地址栏的参数

从一个页面跳转到另外一个页面传参,我们用jqure得到参数需要两部分: 处理浏览器地址栏参数的方法: function GetQueryString(name) { var reg = new Reg ...

javascript-对象的函数(一)

Date.prototype.Format = function(fmt) { //author: meizz var o = { "M+" : this.getMonth()+1 ...

Modernizr 与 Polyfill

之前提到,Modernizr 是 HTML5 和 CSS3 的特性检测工具,这里简单介绍一下它的用法.最简单的用法是在页面的

中添加 Modernizr 的 JavaScri ...

推荐一个可视化的学习Git的好网站:LearnGitBranching

博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:推荐一个可视化的学习Git的好网站:LearnGitBranching.

C# Wpf双向绑定实例

Wpf中双向绑定处理需要两处 实例1: 1.前台Xaml中属性Binding 时Model指定 TwoWay

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值