# picker开发指导 picker是滑动选择器组件,类型支持普通选择器、日期选择器、时间选择器、时间日期选择器和多列文本选择器。具体用法请参考[picker API](../reference/arkui-js/js-components-basic-picker.md)。 ## 创建picker组件 在pages/index目录下的hml文件中创建一个picker组件。 ```html
picker
``` ```css /* xxx.css */ .container { width: 100%; height: 100%; flex-direction: column; justify-content: center; align-items: center; background-color: #F1F3F5; } ``` ![zh-cn_image_0000001210951541](figures/zh-cn_image_0000001210951541.gif) ## 设置picker类型 通过设置picker的type属性来选择滑动选择器类型,如定义picker为日期选择器。 ```html
``` ```css /* xxx.css */ .container { width: 100%; height: 100%; flex-direction: column; justify-content: center; align-items: center; background-color: #F1F3F5; } .pickertext{ margin-bottom: 30px; } ``` ```js // xxx.js export default { data: { rangetext:['15', "20", "25"], textvalue:'Select text', datevalue:'Select date', } } ``` ![zh-cn_image_0000001189098638](figures/zh-cn_image_0000001189098638.gif) > **说明:** > > 普通选择器设置取值范围时,需要使用数据绑定的方式。 ## 设置时间展现格式 picker的hours属性定义时间的展现格式,可选类型有12小时制和24小时制。 ```html
``` ```css /* xxx.css */ .container { width: 100%; height: 100%; flex-direction: column; justify-content: center; align-items: center; background-color: #F1F3F5; } .pickertime { margin-bottom:50px; width: 300px; height: 50px; } ``` ![zh-cn_image_0000001234327855](figures/zh-cn_image_0000001234327855.gif) > **说明:** > - hours属性为12:按照12小时制显示,用上午和下午进行区分; > > - hours属性为24:按照24小时制显示。 ## 添加响应事件 对picker添加change和cancel事件,来对选择的内容进行确定和取消。 ```html
``` ```css /* xxx.css */ .container { width: 100%; height: 100%; flex-direction: column; justify-content: center; align-items: center; background-color: #F1F3F5; } .pickermuitl { margin-bottom:20px; width: 600px; height: 50px; font-size: 25px; letter-spacing:15px; } ``` ```js // xxx.js import prompt from '@system.prompt'; export default { data: { multitext:[["a", "b", "c"], ["e", "f", "g"], ["h", "i"]], multitextvalue:'Select multi-line text', multitextselect:[0,0,0], }, multitextonchange(e) { this.multitextvalue=e.newValue; prompt.showToast({ message:"Multi-column text changed to:" + e.newValue }) }, multitextoncancel() { prompt.showToast({ message:"multitextoncancel" }) }, } ``` ![zh-cn_image_0000001234009343](figures/zh-cn_image_0000001234009343.gif) ## 场景示例 在本场景中,开发者可以自定义填写当前的健康情况来进行打卡。 ```html
Health check-in
Office:
Office hours:
Having fever or cold symptoms
Close contact with someone with COVID-19
``` ```css /* xxx.css */ .doc-page { flex-direction: column; background-color: #F1F3F5; } .title { margin-top: 30px; margin-bottom: 30px; margin-left: 50px; font-weight: bold; color: #0000ff; font-size: 38px; } .out-container { flex-direction: column; align-items: center; } .pick { width: 80%; height: 76px; border: 1px solid #0000ff; border-radius: 20px; padding-left: 12px; } .txt { width: 80%; font-size: 18px; text-align: left; margin-bottom: 12px; margin-left: 12px; } .dvd { margin-top: 30px; margin-bottom: 30px; margin-left: 80px; margin-right: 80px; color: #6495ED; stroke-width: 6px; } ``` ```js // xxx.js import pmt from '@system.prompt' export default { data: { yorn1:'No', yorn2:'No', pos:'Home', yesno:['Yes', 'No'], posarr:['Home', 'Company'], datevalue:'Select time', datetimeselect:'2012-5-6-11-25', dateselect:'2021-9-17', showbuild:true }, onInit() { }, isFever(e) { this.yorn1 = e.newValue }, isTouch(e) { this.yorn2 = e.newValue }, setPos(e) { this.pos = e.newValue if (e.newValue === 'Non-research center') { this.showbuild = false } else { this.showbuild = true } }, setbuild(e) { this.build = e.newValue }, dateonchange(e) { e.month=e.month+1; this.datevalue = e.year + "-" + e.month + "-" + e.day; pmt.showToast({ message:"date:"+e.year+"-"+e.month+"-"+e.day }) }, showtoast() { pmt.showToast({ message: 'Submitted.', duration: 2000, gravity: 'center' }) } } ``` ![zh-cn_image_0000001234342189](figures/zh-cn_image_0000001234342189.gif) ## 相关实例 针对picker开发,有以下相关实例可供参考: - [`Picker`:滑动选择器(JS)(API8)](https://gitee.com/openharmony/applications_app_samples/tree/master/UI/Picker)