时间选择器自定义实战:3 个场景搞定年月日时分秒格式的完整指南
时间选择器自定义实战3 个场景搞定年月日时分秒格式的完整指南【免费下载链接】Android-PickerViewThis is a picker view for android , support linkage effect, timepicker and optionspicker.时间选择器、省市区三级联动项目地址: https://gitcode.com/gh_mirrors/an/Android-PickerView你是不是也遇到过这样的需求一个定时提醒功能用户只想选时:分系统自带的 DatePicker 却固执地弹出一整个日历App 主色是薄荷绿选择器却永远是黑白灰后端要求的日期格式是yyyy-MM-dd HH:mm:ss选完还得自己在代码里拼字符串。这些痛点 Android-PickerView 都能解。这是一个仿 iOS 滚轮的 Android 时间选择器与条件选择器组件支持年月日时分秒任意组合、范围限制、自定义标签、自定义布局甚至农历。这篇文章不打算罗列 API而是带着 3 个真实业务场景从零到一把一个能交付的时间选择器做出来。读完你就能直接照抄代码。5 分钟跑通第一个可用版本先把项目 clone 下来把pickerview和wheelview两个 module 引入你的工程仓库地址https://gitcode.com/gh_mirrors/an/Android-PickerView。最朴素的用法只有三步new 一个 builder、传一个回调、build。TimePickerView pvTime new TimePickerBuilder(this, new OnTimeSelectListener() { Override public void onTimeSelect(Date date, View v) { // date 已经是解析好的 Date直接格式化即可 SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); tvTime.setText(sdf.format(date)); } }).build(); // 弹出来 pvTime.show();不配置任何东西它默认显示年月日三个滚轮可选的年份范围是 1900 到 2100。从这一个最小示例开始后面的定制都是在这个链式调用上不断加方法而已。三个常见坑与避坑方案第一次接这个库的人十个里有八个栽在下面三个坑上。用表格对照着看比踩一遍再改高效得多。坑一月份差一个月错误写法正确写法startDate.set(2023, 1, 1)// 你以为是一月startDate.set(2023, 0, 1)// 一月endDate.set(2025, 12, 31)// 十二月endDate.set(2025, 11, 31)// 十二月原因很简单Java 的Calendar月份从 0 开始0 代表一月、11 代表十二月。demo 源码里专门注释了这一点但因为它不报错、只让你选出的范围莫名偏移所以特别隐蔽。规则凡是手写Calendar.set()设置起止时间月份一律减 1。坑二type 数组长度不是 6直接抛异常setType接收一个长度为 6 的布尔数组分别对应年月日时分秒。写少一个或多个WheelTime源码里会直接throw new RuntimeException(type[] length is not 6)。想只显示时分要这样写.setType(new boolean[]{false, false, false, true, true, false})前面三个false把年月日隐藏第 4、5 位显示时分第 6 位隐藏秒。位置不能错这跟后面setLabel的参数顺序是严格对应的。坑三自定义布局报空指针用setLayoutRes换自定义布局时新布局里必须保留 id 为timepicker的容器及其内部的 6 个WheelViewid 分别为year/month/day/hour/min/sec。库是通过 findViewById 去找这些控件的缺一个就 NPE。正确姿势是复制pickerview/src/main/res/layout/pickerview_time.xml只改你想改的部分——比如只替换顶栏保留滚轮区域原样。按真实需求场景进阶定制场景一只选时间不选日期场景会议提醒、吃药闹钟用户只需要几点几分。Calendar startDate Calendar.getInstance(); startDate.set(2014, 1, 23); // 注意这里是 0-11 月1 表示二月 Calendar endDate Calendar.getInstance(); endDate.set(2027, 2, 28); pvTime new TimePickerBuilder(this, new OnTimeSelectListener() { Override public void onTimeSelect(Date date, View v) { SimpleDateFormat sdf new SimpleDateFormat(HH:mm); btnTime.setText(sdf.format(date)); } }) .setType(new boolean[]{false, false, false, true, true, false}) // 只显示时分 .setRangDate(startDate, endDate) .build();setRangDate会顺带做一件事如果当前默认时间落在范围外它会自动把选中项拨到 startDate。所以只选时分的场景下起止日期随便给个宽范围即可滚轮上只会出现时分两列。场景二限制可选范围 默认值回填场景选生日只能选 1950 年到今天编辑已有档案时选择器要默认停在该用户的生日上。Calendar selectedDate Calendar.getInstance(); selectedDate.set(1995, 5, 15); // 回填1995年6月15日 Calendar startDate Calendar.getInstance(); startDate.set(1950, 0, 1); Calendar endDate Calendar.getInstance(); // 今天 pvTime new TimePickerBuilder(this, new OnTimeSelectListener() { /* ... */ }) .setDate(selectedDate) // 默认选中项 .setRangDate(startDate, endDate) // 可选范围 .setType(new boolean[]{true, true, true, false, false, false}) .setLabel(年, 月, 日, 时, 分, 秒) .build();需要注意两点一是setDate的月份同样要减 1二是如果回填的日期落在范围外库会静默改用 startDate 作为选中项所以回填前最好自己判断一次合法性。场景三换皮肤贴合 App 风格场景App 主色是薄荷绿#24AD9D选择器也该长成这样。pvTime new TimePickerBuilder(this, new OnTimeSelectListener() { /* ... */ }) .setContentTextSize(18) // 滚轮文字大小 .setLineSpacingMultiplier(1.2f) // 行距倍数只能在 1.0-4.0 .setDividerColor(0xFF24AD9D) // 分割线颜色 .setTextColorCenter(0xFF2a2a2a) // 选中项文字颜色 .isCenterLabel(false) // false: 每个 item 都带单位标签 .setTitleText(选择提醒时间) .setSubmitText(确定) .setCancelText(取消) .build();顺带一提isCenterLabel(false)是让滚轮上每一行都显示单位true则是只有中间选中行显示单位。前者信息更完整后者更清爽建议按滚轮数量取舍——滚轮多时用后者避免拥挤。场景四连秒也不想要把标签换成你喜欢的文字setLabel的 6 个参数依次对应年月日时分秒的显示文字。默认是年/月/日/时/分/秒但很多电商的预约上门时间场景想要英文缩写或者干脆不要单位.setType(new boolean[]{false, false, false, true, true, true}) .setLabel(, , , :, , ) // 只给小时后面显示冒号配合setTextXOffset微调每列文字的 X 轴偏移能拼出08 : 30 : 00这类紧凑格式。demo 里自定义时间选择器就是这么处理的完整代码在app/src/main/java/com/bigkoo/pickerviewdemo/MainActivity.java的initCustomTimePicker()方法中。改造前后效果对比用默认配置直接build()出来的选择器功能没问题但谈不上好看蓝按钮、灰分割线、白底和大多数 App 的视觉是脱节的。而经过上面场景三的几行配置选择器立刻和产品主色调统一用户滚动时的焦点落在薄荷绿的分割线之间配合setTitleText让用户明确知道我在设置什么。上图是项目自带效果的动图滚轮依次是年、月、日、时、分、秒六列顶部有取消 / 选择时间 / 确定操作区。注意默认配置只显示年月日三列六列全开需要像前面那样把setType的 6 个位置全部设为true。体验层面的建议滚轮数量越多单位标签越容易挤作一团。6 列全开时建议isCenterLabel(true)并配合setTextXOffset做微调如果只需要日期3 列其实最舒服——这也是为什么PickerOptions源码里默认type就是{true, true, true, false, false, false}。实战要点清单与延伸动手之前把这 6 条过一遍月份一律 0-11写范围前先-1。setType的布尔数组长度必须是 6顺序是年月日时分秒。自定义布局时timepicker容器和 6 个 WheelView 的 id 一个都不能动。回填数据用setDate校验范围用setRangDate两者可叠加。想换样式setDividerColor/setTextColorCenter/setContentTextSize/setLineSpacingMultiplier四件套先调起来。回调里拿到的是Date格式化用你自己的SimpleDateFormat想怎么拼都行。想深入了解某个方法直接读源码比看文档快TimePickerBuilder定义在pickerview/src/main/java/com/bigkoo/pickerview/builder/滚轮的联动和范围逻辑在pickerview/src/main/java/com/bigkoo/pickerview/view/WheelTime.java默认布局在pickerview/src/main/res/layout/pickerview_time.xml。项目还有农历支持setLunarCalendar(true)和自定义布局的完整示例等你想做日历类功能时再翻app/src/main/res/layout/pickerview_custom_lunar.xml也不迟。总结回到开头的三个痛点只选时分、改主题色、格式化输出现在都有了现成的解法。你得到的不仅是能用而是一套可复制的方法论——先明确要哪几列setType再限定范围setRangDate最后调外观颜色/字号/行距任何时间选择需求都能按这个顺序拆解。下一步建议分三步走先把本文的最小示例跑通确认依赖没问题然后照着场景一改一个你业务里的真实表单最后把 demo 源码里MainActivity的各个 init 方法读一遍看看官方是怎么组织这些链式调用的——你会发现它还能做的远比今天讲的多。【免费下载链接】Android-PickerViewThis is a picker view for android , support linkage effect, timepicker and optionspicker.时间选择器、省市区三级联动项目地址: https://gitcode.com/gh_mirrors/an/Android-PickerView创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Android-PickerView实战:3个场景快速搞定时间选择器与省市区三级联动

Android-PickerView实战:3个场景快速搞定时间选择器与省市区三级联动

Android-PickerView实战:3个场景快速搞定时间选择器与省市区三级联动 【免费下载链接】Android-PickerView This is a picker view for android , support linkage effect, timepicker and optionspicker.(时间选择器、省市区三级联动) 项目…

2026/8/24 11:13:54 阅读更多 →
Win11家庭版安装Docker完整指南:WSL2解决方案

Win11家庭版安装Docker完整指南:WSL2解决方案

1. 为什么Win11家庭版需要特殊方式安装Docker? 在Windows 11家庭中文版上安装Docker Desktop会遇到一个关键障碍——系统默认不包含Hyper-V管理程序。与专业版和企业版不同,家庭版缺少完整的虚拟化支持功能,这直接导致Docker Desktop安装时出…

2026/8/25 2:25:00 阅读更多 →
头歌实践教学平台:Spark大数据编程(三十六~四十)

头歌实践教学平台:Spark大数据编程(三十六~四十)

三十六、RDD概述 任务描述 本关任务:根据下面的相关知识,完成与数据认知相关的选择题。 相关知识 RDD介绍 RDD 是Spark的核心抽象,即 弹性分布式数据集(residenta distributed dataset)。代表一个不可变,…

2026/8/20 6:33:40 阅读更多 →

最新新闻

AI创业者通识日报 | 2026年8月5日

AI创业者通识日报 | 2026年8月5日

AI创业者通识日报 | 2026年8月5日 01 今日头条 TOP STORY重磅 阿里Qwen3.8-Max正式发布:2.4万亿参数,16天自主编程,下周开源 8月3日,阿里巴巴正式发布新一代旗舰大模型 Qwen3.8-Max ,总参数量达2.4万亿(稀疏…

2026/8/25 12:48:12 阅读更多 →
AI创业者通识日报 | 2026年8月13日

AI创业者通识日报 | 2026年8月13日

AI创业者通识日报 | 2026年8月13日AI竞争的下半场已悄然换轨——不再是"比谁模型大",而是"比谁用得好、用得起、用得安全"。今日聚焦AI编程赛道估值狂飙、前沿模型安全审查趋严、欧盟AI法案全面执法、以及创业者如何在巨头看不上的地方找到机会…

2026/8/25 12:48:12 阅读更多 →
共享电动车运维端用什么框架? Vue 2 + Vant + 高德地图落地方案

共享电动车运维端用什么框架? Vue 2 + Vant + 高德地图落地方案

深圳猎吧科技租车运维端介绍:车辆调度与换电管理的移动端方案 在租赁(电动车)行业,商家每天要面对三件事:车在哪、电够不够、订单有没有异常。深圳猎吧科技推出的租车运维端(sass-moblie-admin)…

2026/8/25 12:48:12 阅读更多 →
VSCode_Remote-SSH_免密登录Ubuntu24.04完整教程

VSCode_Remote-SSH_免密登录Ubuntu24.04完整教程

VS Code Remote-SSH 免密登录 Ubuntu 24.04 完整配置教程(Windows 端) 前言 在嵌入式开发、服务端开发场景中,我们常使用 VS Code 的 Remote-SSH 插件连接远程 Ubuntu 服务器进行代码开发。每次连接都手动输入密码既繁琐又影响效率,而 SSH 公钥认证 是官方推荐的免密登录…

2026/8/25 12:48:12 阅读更多 →
评测prompt效果

评测prompt效果

可以把评测拆成三件事: 是否遵守提示词要求是否忠实于原始文档周报本身是否完整、清晰、可用 不要只用“整体看起来不错”这种单一主观评分。更可靠的方法是:规则检测 LLM 裁判 人工抽检。 一、先把提示词转成可检查项 假设提示词是:根据文…

2026/8/25 12:48:12 阅读更多 →
KANO模型结果解读:需求属性的Better-Worse系数

KANO模型结果解读:需求属性的Better-Worse系数

KANO模型结果解读一、分析方法概述KANO模型是由日本学者狩野纪昭(Noriaki Kano)提出的一种产品质量分类理论,用于分析功能/服务属性与用户满意度之间的非线性关系。该模型通过正向题(如果有某功能时的评价)和负向题&am…

2026/8/25 12:47:11 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述:从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”,这个名字对理工科学生来说,分量极重。每年,无数团队在三天三夜的时间里,为一个开放性问题绞尽脑汁,从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →