android 开发 时间选择器TimePicker的使用
前言
我知道现在github上有很多功能强大的各色选择器,但是Android其实是自带一些时间选择器的。在不需要太复杂的ui开发下可以选择使用这些系统自带的。android系统自带时间控件:
- DatePicker 日期显示控件
- DatePickerDialog 日期对话框控件
- TimePicker 时间显示控件
- TimePickerDialog 时间对话框控件
讲解TimePicker选择器的一些自定义设置
首先是布局的创建:
<TimePicker
android:id="@+id/timepicker"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#ffffff"
/>
设置TimePicker选择器风格
TimePicker 本身自带两种风格,都可以在xml中设置,一种是
android:timePickerMode="clock"
另一种是:
android:timePickerMode="spinner"
TimePicker的显示规模大小设置
android:scaleX="2"
android:scaleY="2"
效果:
TimePicker的数据回调
mTimepicker = (TimePicker) inflate.findViewById(R.id.timepicker);
mTimepicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS); //设置点击事件不弹键盘
mTimepicker.setIs24HourView(true); //设置时间显示为24小时
mTimepicker.setHour(8); //设置当前小时
mTimepicker.setMinute(10); //设置当前分(0-59)
mTimepicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() { //获取当前选择的时间
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
}
});
利用反射修改一些选择器的字体效果与背景颜色
需要用到反射的方法了,比如更改分割线的样式,设置起始截止时间等:
首先我们要通过反射获取TimePicker源码里hour和minute的id:
Resources systemResources = Resources.getSystem();
int hourNumberPickerId = systemResources.getIdentifier("hour", "id", "android");
int minuteNumberPickerId = systemResources.getIdentifier("minute", "id", "android");
然后用我们定义的TimePicker来获取这个id并转换成hour和minute对应的NumberPicker:
NumberPicker hourNumberPicker = (NumberPicker) mTimepicker.findViewById(hourNumberPickerId);
NumberPicker minuteNumberPicker = (NumberPicker) mTimepicker.findViewById(minuteNumberPickerId);
通过获取到的hourNumberPicker和minuteNumberPicker我们可以先进行TimePicker的时间限制:
hourNumberPicker.setMinValue(8); //设置最小hour
hourNumberPicker.setMaxValue(12); //设置最大hour
minuteNumberPicker .setMinValue(0); //设置最小minute
minuteNumberPicker .setMaxValue(30); //设置最大minute
修改滚动条背景颜色
hourNumberPicker.setBackgroundColor(getResources().getColor(R.color.colorBlue));// 修改背景颜色
效果图:
隐藏冒号
用最暴力的方式隐藏滚动条的冒号,就是直接找ChildAt
ViewGroup view = (ViewGroup) mTimepicker.getChildAt(0);
ViewGroup view2 = (ViewGroup) view.getChildAt(1);
view2.getChildAt(1).setVisibility(View.GONE);
禁止键盘输入
mTimePicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS);
TimePicker分割线的颜色和高度
private void setNumberPickerDivider(NumberPicker numberPicker) {
NumberPicker picker = numberPicker;
Field[] pickerFields = NumberPicker.class.getDeclaredFields();
for (Field pf : pickerFields) {
if (pf.getName().equals("mSelectionDivider")) { //设置颜色
pf.setAccessible(true);
ColorDrawable colorDrawable = new ColorDrawable(
ContextCompat.getColor(this, R.color.colortime)); //选择自己喜欢的颜色
try {
pf.set(numberPicker, colorDrawable);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
if (pf.getName().equals("mSelectionDividerHeight")) { //设置高度
pf.setAccessible(true);
try {
int result = 3; //要设置的高度
pf.set(picker, result);
} catch (Exception e) {
e.printStackTrace();
}
break;
}
picker.invalidate();
}
}
android 开发 时间选择器TimePicker的使用的更多相关文章
- Android零基础入门第57节:日期选择器DatePicker和时间选择器TimePicker
原文:Android零基础入门第57节:日期选择器DatePicker和时间选择器TimePicker 在实际开发中,经常会遇见一些时间选择器.日期选择器.数字选择器等需求,那么从本期开始来学习And ...
- android开发时间和日期的代码实现工具类(一)
android开发时间和日期工具类的代码实现: package com.gzcivil.utils; import android.annotation.SuppressLint; import an ...
- Android 开发笔记___时间选择器---timePicker
像datepicker一样,也有timepicker. 同样有timepickerdialog 所用到的方法还是一样,监听时间选择器的变化. package com.example.alimjan.h ...
- Android日期时间选择器实现以及自定义大小
本文主要讲两个内容:1.如何将DatePicker和TimePicker放在一个dialog里面:2.改变他们的宽度: 问题1:其实现思路就是自定义一个Dialog,然后往里面同时放入DatePick ...
- 时间选择器(timepicker)
可以使用Slider拖动选择,也可以使用timespinner改变时间,或者手工填写. 自动判断位置 效果: 源码: <!DOCTYPE html> <html xmlns=&quo ...
- 【Android】时间选择器,选择日期DatePicker 简单详解demo及教程
作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先给大家看一下我们今天这个最终实现 ...
- Android日期时间选择器DatePicker、TimePicker日期时间改变事件响应(Android学习笔记)
activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...
- android 滚动时间选择器
一.概述 滚动时间选择现在貌似很常用,所以就总结一下,显示效果一般般 , 做个参考吧! 以上就是效果图,可以滚动选择 日期时间, 由于是在 5.0系统运行的,貌似5.0系统做了什么变动,下面的 &qu ...
- 推荐一个android 日期时间选择器(转)
最近接触了日期选择的功能,那么肯定得需要一个日期选择控件,Android 系统有自带的 DatePicker 控件,但是不说这个控件有多 难看吧,现在 Android 手机版本那么多,用户弹出来的控件 ...
随机推荐
- redis 如何查看所有的key
可以使用KEYS 命令 KEYS pattern 例如, 列出所有的key redis> keys * 列出匹配的key redis>keys apple* 1) apple1 2) ap ...
- NLP自然语言处理中的hanlp分词实例
本篇分享的依然是关于hanlp的分词使用,文章内容分享自 gladosAI 的博客,本篇文章中提出了一个问题,hanlp分词影响了实验判断结果.为何会如此,不妨一起学习一下 gladosAI 的这篇文 ...
- spark集群使用hanlp进行分布式分词操作说明
本篇分享一个使用hanlp分词的操作小案例,即在spark集群中使用hanlp完成分布式分词的操作,文章整理自[qq_33872191]的博客,感谢分享!以下为全文: 分两步: 第一步:实现han ...
- nginx的url规则小tips
背景信息: 被代理的服务器(10.90.7.2)上,nginx的配置内容 server { listen ; server_name localhost; default_type text/html ...
- ML平台_饿了么实践
(转载至:https://zhuanlan.zhihu.com/p/28592540) 说到机器学习.大数据,大家听到的是 Hadoop 和 Spark 居多,它们跟 TensorFlow 是一个什么 ...
- xe5 android sample 中的 SimpleList 是怎样绑定的 [转]
C:\Users\Public\Documents\RAD Studio\12.0\Samples\FireMonkeyMobile 例子中的绑定方式如下图: 1.拖拽一个listview到界面上,然 ...
- 【java】之Method和Field反射获取和设置属性值
package com.javaluna.reflect; import java.lang.reflect.Field; import java.lang.reflect.Method; impor ...
- Ubuntu 14.10 下安装伪分布式hive-0.14.0
本地独立模式,MySQL作为元数据库 1 安装环境准备 1.1 安装JDK,在安装hadoop时候已经安装了,参考http://www.cnblogs.com/liuchangchun/p/40972 ...
- git之win安装git和环境配置及常用命令总结
12.windowns安装git和环境变量配置 11.git之常见命令总结 ===== 12.windowns安装git和环境变量配置 ; 转自 https://wuzhuti.cn/2385.htm ...
- DNS解析分析
一.基本概念 域名系统: 域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS使 ...