当前位置: 首页 > news >正文

《伴时匣》app开发技术分享--表单提交页(5)

技术栈

Appgallery connect

开发准备

上一节我们已经实现了表单信息的创建,完成了首页跳转表单提交页的内容,这一节我们就要实现表单创建前的数据填充的页面。

功能分析

在表单提交前,我们要实现的静态内容有很多,分别有输入框,开关,时间选择器,表类型,是否置顶,是否设置结束时间,是否包含当天日期,事件的颜色选择,图标选择,当天的天气选择,心情选择,这些我们都需要去先有一个静态选择或者展示的入口

功能开发

我们先实现简单的静态页

import { CommonTopBar } from '../widget/CommonTopBar';@Entry
@Component
struct TablePushPage {@State title:string=''@State time_visibility:boolean=false@State top_visibility:boolean=falsebuild() {Column({space:15}) {CommonTopBar({ title: "添加新日子", alpha: 0, titleAlignment: TextAlign.Center ,backButton:true})Row({space:10}){Image($r('app.media.mubiaoshijian')).height(30).width(30)TextInput({text:this.title,placeholder: '请输入事件名称'}).placeholderColor("#ff999595").fontColor("#333333").onChange((value: string) => {this.title=value})}.width('100%').justifyContent(FlexAlign.Start)Row({space:10}){Image($r('app.media.mubiaori')).height(30).width(30)Text("目标日").fontColor(Color.Gray).fontSize(14)Blank()}.width('100%').justifyContent(FlexAlign.SpaceBetween)Row({space:10}){Image($r('app.media.daoshuben')).height(30).width(30)Text("倒数本").fontColor(Color.Gray).fontSize(14)Blank()Text("生活").fontColor(Color.Gray).fontSize(14)Image($r('app.media.xiajiantou')).height(15).width(15)}.width('100%').justifyContent(FlexAlign.SpaceBetween)Row({space:10}){Image($r('app.media.zhiding')).height(30).width(30)Text("置顶").fontColor(Color.Gray).fontSize(14)Blank()Image(this.top_visibility?$r('app.media.kai'):$r('app.media.guan')).width(60).height(30).onClick(async ()=>{this.top_visibility=!this.top_visibility})}.width('100%').justifyContent(FlexAlign.SpaceBetween)Row({space:10}){Image($r('app.media.jingqueshijian')).height(30).width(30)Text("显示精确时间").fontColor(Color.Gray).fontSize(14)Blank()Image(this.time_visibility?$r('app.media.kai'):$r('app.media.guan')).width(60).height(30).onClick(async ()=>{this.time_visibility=!this.time_visibility})}.width('100%').justifyContent(FlexAlign.SpaceBetween)Row({space:10}){Image($r('app.media.yanse')).height(30).width(30)Text("事件颜色").fontColor(Color.Gray).fontSize(14)Blank()Image($r('app.media.xiajiantou')).height(15).width(15)}.width('100%').justifyContent(FlexAlign.SpaceBetween)Row({space:10}){Image($r('app.media.tubiao')).height(30).width(30)Text("事件图标").fontColor(Color.Gray).fontSize(14)Blank()Image($r('app.media.xiajiantou')).height(15).width(15)}.width('100%').justifyContent(FlexAlign.SpaceBetween)Row({space:10}){Image($r('app.media.tianqi')).height(30).width(30)Text("天气").fontColor(Color.Gray).fontSize(14)Blank()Image($r('app.media.xiajiantou')).height(15).width(15)}.width('100%').justifyContent(FlexAlign.SpaceBetween)Row({space:10}){Image($r('app.media.xinqing')).height(30).width(30)Text("心情").fontColor(Color.Gray).fontSize(14)Blank()Image($r('app.media.xiajiantou')).height(15).width(15)}.width('100%').justifyContent(FlexAlign.SpaceBetween)}.padding(10).backgroundColor(Color.White).height('100%').width('100%')}
}

接下来我们实现一个日期选择的弹窗

  Row({space:10}){Image($r('app.media.mubiaori')).height(30).width(30)Text("目标日").fontColor(Color.Gray).fontSize(14)Blank()}.width('100%').justifyContent(FlexAlign.SpaceBetween).onClick(()=>{this.getUIContext().showDatePickerDialog({start: new Date("2000-1-1"),end: new Date("2100-12-31"),selected: this.selectedDate,disappearTextStyle: { color: '#297bec', font: { size: '20fp', weight: FontWeight.Bold } },textStyle: { color: Color.Black, font: { size: '18fp', weight: FontWeight.Normal } },selectedTextStyle: { color: Color.Blue, font: { size: '26fp', weight: FontWeight.Regular } },acceptButtonStyle: {type: ButtonType.Normal,style: ButtonStyleMode.NORMAL,role: ButtonRole.NORMAL,fontColor: 'rgb(81, 81, 216)',fontSize: '26fp',fontWeight: FontWeight.Bolder,fontStyle: FontStyle.Normal,fontFamily: 'sans-serif',backgroundColor: '#A6ACAF',borderRadius: 20},cancelButtonStyle: {type: ButtonType.Normal,style: ButtonStyleMode.NORMAL,role: ButtonRole.NORMAL,fontColor: Color.Blue,fontSize: '16fp',fontWeight: FontWeight.Normal,fontStyle: FontStyle.Italic,fontFamily: 'sans-serif',backgroundColor: '#50182431',borderRadius: 10},onDateAccept: (value: Date) => {this.selectedDate = value;console.info("时间" + value.toString());}});})

这样我们就实现了表单提交页和日期的选择器

相关文章:

  • STM32H723ZGT6-修改内存分布以定义很大的数组
  • HarmonyOS 公共事件机制介绍以及多进程之间的通信实现(9000字详解)
  • FPGA实现CameraLink视频解码,基于Xilinx ISERDES2原语,提供4套工程源码和技术支持
  • 闲庭信步使用SV搭建图像测试平台:第十九课——YCbCr图像转RGB图像
  • 多模态大语言模型arxiv论文略读(143)
  • python基础23(2025.6.29)分布式爬虫(增量式爬虫去重)redis应用_(未完成!)
  • Vue列表渲染与数据监测原理
  • win上对调ctrl和alt键
  • Gemini cli Quickstart
  • Conda 环境配置之 -- Mamba安装(causal-conv1d、mamba_ssm 最简单配置方法)-- 不需要重新配置CDUA
  • 【FreeRTOS-任务通知】
  • 【Linux高级全栈开发】2.4 自研框架:基于 dpdk 的用户态协议栈的实现
  • 数据结构 哈希表、栈的应用与链式队列 6.29 (尾)
  • 模拟工作队列 - 华为OD机试真题(JavaScript卷)
  • Python 数据分析与可视化 Day 11 - 特征工程基础
  • 从0开始学linux韦东山教程Linux驱动入门实验班(3)
  • python中多线程:线程插队方法join详解、线程停止、通过变量来让线程停止
  • Java面试宝典:基础五
  • 【数据集】中国2016-2022年 城市土地利用数据集 CULU
  • 操作系统学习笔记 | 操作系统常见问题整理