TimePicker DatePicker使用及6.0以下监听事件设置


 
 
运行截图

public void showPickerDialog(){
    AlertDialog.Builder builder=new AlertDialog.Builder(AddBallActivity.this);
    View view= LayoutInflater.from(AddBallActivity.this).inflate(
            R.layout.date_time_picker,null);
    final DatePicker datePicker=view.findViewById(R.id.picker_date);
    TimePicker timePicker=view.findViewById(R.id.picker_time);
//在xml文件中设置不起作用,在代码中实现
    datePicker.setCalendarViewShown(false);


    datePicker.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            year=datePicker.getYear();
            month=datePicker.getMonth();
            day=datePicker.getDayOfMonth();
            return true;
        }
    });
    //api要求26,所以用以上代替实现
        /*datePicker.setOnDateChangedListener(new DatePicker.OnDateChangedListener() {
        @Override
        public void onDateChanged(DatePicker view, int year1, int monthOfYear, int dayOfMonth) {
            year=year1;
            month=monthOfYear;
            day=dayOfMonth;
        }
    });*/


    timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
        @Override
        public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
            hour=hourOfDay;
            min=minute;
        }
    });

    TextView cancel=view.findViewById(R.id.picker_cancel);
    TextView confirm=view.findViewById(R.id.picker_confirm);
    builder.setView(view);
    final AlertDialog dialog=builder.create();

    cancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }
    });


    confirm.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final String s=year+"-"+month+"-"+day+" "+hour+":"+min;
            addTime.setText(s);
            dialog.dismiss();
        }
    });
    dialog.show();

    //每次进入此dialog就赋值
    year=datePicker.getYear();
    month=datePicker.getMonth();
    day=datePicker.getDayOfMonth();
 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        hour=timePicker.getHour();
        min=timePicker.getMinute();
    }else{
        hour=timePicker.getCurrentHour();
        min=timePicker.getCurrentMinute();
    }


}
timePicker.getHour();
timePicker.getMinute();要求api23,使用
timePicker.getCurrentHour();
timePicker.getCurrentMinute();匹配api23以下的系统
setOnDateChangedListener要求api26,所以用onTouchListener代替,达到更新时间的操作

 
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <DatePicker
        android:id="@+id/picker_date"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:datePickerMode="spinner"
        android:layout_gravity="center"
        android:spinnersShown="true"></DatePicker>

    <TimePicker
        android:id="@+id/picker_time"
        android:layout_marginTop="-20dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:timePickerMode="spinner"></TimePicker>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center">
        <TextView
            android:id="@+id/picker_cancel"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:gravity="center"
            android:layout_height="50dp"
            android:textSize="18sp"
            android:clickable="true"
            android:background="@drawable/time_picker"
            android:text="取消"/>

        <TextView
            android:id="@+id/picker_confirm"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:gravity="center"
            android:layout_height="50dp"
            android:clickable="true"
            android:textSize="18sp"
            android:background="@drawable/time_picker"
            android:text="确定"/>
    </LinearLayout>

</LinearLayout>
系统默认的picker带有时钟和日历,添加
android:datePickerMode="spinner"
android:timePickerMode="spinner"可以消去时钟日历
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值