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

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

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

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:padding="10dip" >  
   
    <TextView 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:singleLine="true" 
        android:text="请选择日期" 
        android:textColor="#FFFFFF" 
        android:textSize="16sp" />  
   
    <DatePicker 
        android:id="@+id/date_picker" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="5dip" />  
   
    <TextView 
        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" />  
   
    <TimePicker 
        android:id="@+id/time_picker" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="5dip" />  
   
</LinearLayout>
</span>

代码中的实现:

<span style="font-size:18px;">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;  
    }  
       
}
</span>


运行后的效果图:



点击确定之后




URL:http://www.open-open.com/lib/view/open1364268229062.html


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会针对您的问题提供答案。以下是基于Android Studio创建的Android应用,实现CalendarView、DatePickerTimePicker,并显示用户设置后的日期时间的详细代码。 1. 首先,在布局文件添加以下代码,用于添加CalendarView、DatePickerTimePicker控件。 ```xml <CalendarView android:id="@+id/calendarView" android:layout_width="match_parent" android:layout_height="wrap_content" /> <DatePicker android:id="@+id/datePicker" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TimePicker android:id="@+id/timePicker" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/dateTextView" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/timeTextView" android:layout_width="match_parent" android:layout_height="wrap_content" /> ``` 2. 接下来,在Java代码为控件添加事件监听器,并且在事件发生时更新用户选择的日期时间。以下是详细的Java代码: ```java public class MainActivity extends AppCompatActivity { private CalendarView calendarView; private DatePicker datePicker; private TimePicker timePicker; private TextView dateTextView; private TextView timeTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取控件实例 calendarView = findViewById(R.id.calendarView); datePicker = findViewById(R.id.datePicker); timePicker = findViewById(R.id.timePicker); dateTextView = findViewById(R.id.dateTextView); timeTextView = findViewById(R.id.timeTextView); // 设置日期选择变化事件监听器 calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { @Override public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) { // 更新日期显示TextView dateTextView.setText(year + "-" + (month + 1) + "-" + dayOfMonth); } }); datePicker.setOnDateChangedListener(new DatePicker.OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // 更新日期显示TextView dateTextView.setText(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth); } }); // 设置时间选择变化事件监听器 timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() { @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { // 更新时间显示TextView timeTextView.setText(hourOfDay + ":" + minute); } }); } } ``` 通过使用以上代码,您可以创建一个Android应用程序,为用户提供日期时间选择的功能,并分别在三个TextView上显示用户设置后的日期时间

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值