zoukankan      html  css  js  c++  java
  • Android中实现日期时间选择器(DatePicker和TimePicker)

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

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

    <?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>

    代码中的实现:

    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;
        }
        
    }

    运行后的效果图:

    点击EditTet之后

    点击确定之后

    http://blog.csdn.net/android_ls/article/details/8644067

  • 相关阅读:
    【logback】认识logback
    【mybatis】认识selectKey
    【Mybatis】Insert批量操作
    JS事件委托
    android studio cmd获取SHA1 + java环境配置
    View的setOnClickListener的添加方法
    android apk 反编译 包括解密xml文件 资源文件 源代码
    localdb 2014 添加实例 v12.0 及IIS设置
    win10 离线安装 net 2.0 3.5
    c# json使用集
  • 原文地址:https://www.cnblogs.com/tianciliangen/p/4018362.html
Copyright © 2011-2022 走看看