Datepicker和Timepicker简单使用与样式改变,以及系统时间获取

本文介绍了在Android中如何使用Datepicker和Timepicker实现输入框默认显示当前日期时间,并展示在不同API级别下的显示效果。通过设置`android:timePickerMode = "spinner"`来改变样式。同时,提供了获取和格式化系统时间的方法。

坚持是个好东西,为啥我坚持不了呢!
需求是:输入框中,默认显示当前日期和时间,然后点击输入框进行时间选择器
首先效果图:
1.输入框
这里写图片描述
2,效果图(1)(安卓2.3,api 10)
这里写图片描述
效果图(2)(安卓6.0,api 23)
这里写图片描述
首先输入框代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:text="选择时间:"
        android:textSize="18sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <EditText
        android:id="@+id/date_text"
        android:textSize="18sp"
        android:textColor="@color/colorAccent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

然后是自定义的dialog布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="btzh.com.mydatetimepicker.MainActivity">
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <TextView
                android:textSize="18sp"
                android:text="请选择日期:"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <DatePicker
                android:calendarViewShown="false"
                android:datePickerMode="spinner"
                android:id="@+id/date_picker"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dip" />
            <TextView
                android:textSize="18sp"
                android:text="请选择时间:"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
            <TimePicker
                android:timePickerMode = "spinner"
                android:id="@+id/time_picker"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dip" />
        </LinearLayout>
</LinearLayout>

最后就是activity里面的代码了:

package btzh.com.mydatetimepicker;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
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;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity implements View.OnTouchListener {
    EditText editText_date;  //输入框

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        editText_date = (EditText) findViewById(R.id.date_text);
        editText_date.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.activity_main, 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);
            //24小时制
            timePicker.setIs24HourView(true);
            final int inType = editText_date.getInputType();
            editText_date.setInputType(InputType.TYPE_NULL);
            editText_date.onTouchEvent(event);
            editText_date.setInputType(inType);
            editText_date.setSelection(editText_date.getText().length());
            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());

                      /**这边注释的代码是用StringBuffer来设置日期显示的我用的下面这种方式,具体有什么区别与好处,本人还不知道**/
//                    editText_date.setText(sb);
                    editText_date.setText(datePicker.getYear()+"-"+datePicker.getMonth()+"-"
                    +datePicker.getDayOfMonth()+"    "+timePicker.getCurrentHour()+" : "+timePicker.getCurrentMinute());

                    dialog.cancel();
                }
            });
            builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                }
            });
            Dialog dialog = builder.create();
            dialog.show();
        }
        return true;
    }
}

总结:

 <DatePicker
 android:calendarViewShown="false"   //取消日历
 android:datePickerMode="spinner"    //spinner样式

 只用这两句话同时使用才会起作用,显示如上图所示效果:

 1.都不用,安卓5.0之后默认的日历效果
 2.只用android:calendarViewShown="false"  
 会显示默认安卓5.0之后的日历效果
 3.只用android:datePickerMode="spinner"
 会同时显示滑动视图与默认日历视图
 4.同时使用
 出现如上图所示效果

<TimePicker
     android:timePickerMode = "spinner"    //spinner样式
     android:calendarViewShown="false"
     android:id="@+id/time_picker"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_marginTop="5dip" />

android:timePickerMode = “spinner” //spinner样式
如果不用这个属性,会默认显示钟表样式

获取系统时间:

 Date localDate1 = new Date();
        SimpleDateFormat localSimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm",Locale.CHINA);
       String localtime = localSimpleDateFormat.format(localDate1);
       EditText fssj_text = (EditText)findViewById(R.id.aqsc_sj);
       fssj_text.setText(localtime);

显示效果:2016-12-13 14:18
把其中的换成:yyyy年MM月dd日 HH:mm
显示效果:2016年12月13日 14:18;

继续学习!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值