Android之TimePickerDialog使用

目前项目中要实现一个时间滚动选择的需求,暂时只实现滚动选择时间,日期暂时不需要实现。具体实现效果如下:

时间滚动效果
好了,效果就是这样。接下来我们直接撸代码,代码很简单。我们首先来看布局文件:

<TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_end_time"
            android:hint="8:00"
            android:textSize="16sp"
            android:layout_marginLeft="160dp"
            />

我这里是一个TextView,用来显示时间。再来看具体实现代码:

 new TimePickerDialog(this,new TimePickerDialog.OnTimeSetListener() {

            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                houre = hourOfDay;
                WuraoActivity.this.minute = minute;
                if (WuraoActivity.this.minute < 10){
                    endTimeTv.setText(houre+":"+"0"+WuraoActivity.this.minute);
                }else {
                    endTimeTv.setText(houre+":"+WuraoActivity.this.minute);
                }
            }
        }, 0, 0, true).show();

好了,这样我们在点击TextView选择时间时,就会弹出Dialog滚动选择时间。但是有一个问题,如果我们的手机是Android 5.0以上。这时TimePickerDialog会在手机上显示为一个圆形的钟表,并不是我们想要实现的滚动效果。
具体效果:
圆形钟表效果
这是为什么呢?具体原因可以去查看源码,我们先说一下如何解决这个问题。先来看一下TimePickerDialog的语法:

创建:

TimePickerDialog(Context context, TimePickerDialog.OnTimeSetListener listener, int hourOfDay, 
int minute, boolean is24HourView)

参数:

  1. context:当前上下文
  2. listener:时间改变监听器
  3. hourOfDay:初始化的小时
  4. minute:初始化的分钟
  5. is24HourView:是否以24小时显示时间

    了解了TimePickerDialog的语法,怎么来实现滚动的效果呢?查了下TimePickerDialog有一个参数,AlertDialog.THEME_HOLO_LIGHT可以改变TimePickerDialog在Android 5.0以上无法显示滚动效果的问题,正常显示出滚动时间的效果。具体代码如下:

 new TimePickerDialog(this,AlertDialog.THEME_HOLO_LIGHT,new TimePickerDialog.OnTimeSetListener() {

            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                houre = hourOfDay;
                WuraoActivity.this.minute = minute;
                if (WuraoActivity.this.minute < 10){
                    endTimeTv.setText(houre+":"+"0"+WuraoActivity.this.minute);
                }else {
                    endTimeTv.setText(houre+":"+WuraoActivity.this.minute);
                }
            }
        }, 0, 0, true).show();

好了,这是在使用TimePickerDialog时遇到的问题。时间滚动的效果也有其他的实现方法,并不是非要选择TimePickerDialog,要注意TimePickerDialog在5.0以上和5.0以下显示效果不同的问题、

  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值