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

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

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?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>

    代码中的实现:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    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
        
           
    }

    运行后的效果图:

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

    点击EditTet之后

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

    点击确定之后

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

  • 相关阅读:
    Postfix邮件服务
    Python
    LVS
    MFS
    Apache
    Zookeeper集群 + Kafka集群 + KafkaOffsetMonitor 监控
    shell 检测安装包
    shell ssh 批量执行
    shell 判断脚本参数
    bzoj 1500 修改区间 splay
  • 原文地址:https://www.cnblogs.com/cmblogs/p/4377621.html
Copyright © 2011-2022 走看看