HarmonyOS鸿蒙开发指南:容器组建 stepper开发指导

2024-01-09

目录

创建Stepper组件

设置index属性

设置样式

添加事件

场景示例


创建Stepper组件

在pages/index目录下的hml文件中创建一个Stepper组件。


<!-- index.hml -->
<div class="container"> 
 <stepper>    
   <stepper-item>     
     <text>Step 1</text>
   </stepper-item> 
   <stepper-item>     
     <text>Step 2</text>
   </stepper-item> 
 </stepper> 
</div>
  

/* xxx.css */
.container {
  width:100%;
  height:100%;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background-color: #F1F3F5;
}
text{
  width: 100%;
  height: 100%;
  text-align: center;
}
  

设置index属性

页面默认显示索引值为index的步骤。


<!-- index.hml -->
<div class="container"> 
 <stepper index="2">    
   <stepper-item>     
     <text>stepper-item1</text>
   </stepper-item> 
   <stepper-item>     
     <text>stepper-item2</text>
   </stepper-item> 
   <stepper-item>     
     <text>stepper-item3</text>
   </stepper-item> 
  </stepper> 
</div>
  

/* index.css */
.container {
  width:100%;
  height:100%;
  flex-direction: column;
  background-color: #F1F3F5;
}
text{
  width: 100%;
  height: 100%;
  text-align: center;
}
  

通过设置label属性,自定义stepper-item的提示按钮。


<!-- index.hml -->
<div class="container"> 
 <stepper index="1">    
   <stepper-item label="{{label_1}}">     
     <text>stepper-item1</text>
   </stepper-item> 
   <stepper-item label="{{label_2}}">     
     <text>stepper-item2</text>
   </stepper-item> 
   <stepper-item label="{{label_3}}">     
     <text>stepper-item3</text>
   </stepper-item>
   <stepper-item>     
     <text>stepper-item4</text>
   </stepper-item> 
 </stepper> 
</div>
  

/* index.css */
.container {  
  width:100%;
  height:100%;
  flex-direction: column;
  background-color: #F1F3F5;
}
text{
  width: 100%;
  height: 100%;
  text-align: center;
}
  

/* index.js */
export default { 
  data: {
    label_1:{
      nextLabel: 'NEXT',      
      status: 'normal'    
    },
    label_2:{
      prevLabel: 'BACK',
      nextLabel: 'NEXT',
      status: 'normal'
    },
    label_3:{
      prevLabel: 'BACK',
      nextLabel: 'END',
      status: 'disabled'
    },
  },
}
  

设置样式

Stepper组件默认填充父容器,通过border和background-color设置边框、背景色。


<!-- index.hml -->
<div class="container" > 
  <div class="stepperContent">
    <stepper class="stepperClass">    
      <stepper-item>     
        <text>stepper-item1</text>
      </stepper-item> 
    </stepper> 
  </div>
</div>
  

/* index.css */
.container {
  width:100%;
  height:100%;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background-color:#F1F3F5;
}
.stepperContent{
  width: 300px;
  height: 300px;
}
.stepperClass{
  border:1px solid silver ;
  background-color: white;
}
text{
  width: 100%;
  height: 100%;
  text-align: center;
}
  

添加事件

Stepper分别添加finish,change,next,back,skip事件。

  • 当change与next或back同时存在时,会先执行next或back事件再去执行change事件。

  • 重新设置index属性值时要先清除index的值再重新设置,否则检测不到值的改变。


<!-- index.hml -->
<div class="container"  style="background-color:#F1F3F5;">
  <div >
    <stepper onfinish="stepperFinish" οnchange="stepperChange" onnext="stepperNext" onback="stepperBack" onskip="stepperSkip" id="stepperId" index="{{index}}">
      <stepper-item>
        <text>stepper-item1</text>
        <button value="skip" οnclick="skipClick"></button>
      </stepper-item>
      <stepper-item>
         <text>stepper-item2</text>
         <button value="skip" οnclick="skipClick"></button>
      </stepper-item>
      <stepper-item>
        <text>stepper-item3</text>
      </stepper-item>
    </stepper>
  </div>
</div>
  

/* xxx.css */
.doc-page {
  width:100%;
  height:100%;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
stepper-item{
  width: 100%;
  flex-direction: column;
  align-self: center;
  justify-content: center;
}
text{
  margin-top: 45%;
  justify-content: center;
  align-self: center;
  margin-bottom: 50px;
}
button{
  width: 80%;
  height: 60px;
  margin-top: 20px;
}
  

/* index.js */
import prompt from '@system.prompt';
export default {
  data: {
    index:0,
  },
   stepperSkip(){
    this.index = null;
    this.index=2;
  },
   skipClick(){
    this.$element('stepperId').setNextButtonStatus({status: 'skip', label: 'SKIP'});
  },
  stepperFinish(){
    prompt.showToast({
      message: 'All Finished'
    })
  },
  stepperChange(e){
    console.log("stepperChange"+e.index)
    prompt.showToast({
      message: 'Previous step: '+e.prevIndex+"-------Current step:"+e.index
    })
  },
  stepperNext(e){
    console.log("stepperNext"+e.index)
    prompt.showToast({
      message: 'Current step:'+e.index+"-------Next step:"+e.pendingIndex
    })
    var index = {pendingIndex:e.pendingIndex }
    return index;
  },
  stepperBack(e){
    console.log("stepperBack"+e.index)
    var index = {pendingIndex: e.pendingIndex }
    return index;
  }
}
  

场景示例

在本场景中,开发者可以在界面上点击选择并实时显示选择结果,点击下一步按钮后可动态修改页面的字体颜色和字体大小。

用Stepper组件实现分步,再创建toggle组件实现选择显示功能,再使用select组件实现改变选中值动态修改字体颜色或大小。


<div class="container">
  <stepper id="mystep" index="0" onfinish="back" style="text-color: indigo;">
    <stepper-item label="{{label1}}">
      <div style="flex-direction: column;padding: 0px 10px;">
        <text class="text" style="margin-top: 10%;text-align: center;width: 100%;">Select error types:</text>
        <text style="margin-top: 20px;padding: 10px">
          <span>{{error}}</span>
        </text>
        <div style="justify-content: space-around;flex-wrap: wrap;">
          <toggle for="{{togglelist1}}" value="{{$item}}" class="tog" οnchange="multiTog({{$item}})"></toggle>
        </div>
      </div>
    </stepper-item>
    <stepper-item label="{{label2}}">
      <div style="flex-direction: column;align-items: center;">
        <text class="txt" style="margin-top: 10%;">Toggle</text>
        <div style="justify-content: space-around;flex-wrap: wrap;;margin-top:10%">
          <toggle class="tog" for="{{togglelist1}}" value="{{$item}}" style="text-color: {{tcolor}};font-size: {{tsize}}; font-style: {{tstyle}};font-weight: {{tweight}};font-family: {{tfamily}};">
          </toggle>
        </div>
        <div style="flex-wrap: wrap;width: 700px;margin-top:10%">
          <div style="flex-direction: column;width: 350px;height: 185px;align-items: center;">
            <text class="txt">text-color</text>
            <select οnchange="settcolor">
              <option for="{{color_list}}" value="{{$item}}">{{$item}}</option>
            </select>
          </div>
          <div style="flex-direction: column;width: 350px;height: 185px;align-items: center;">
            <text class="txt">font-size</text>
            <select οnchange="settsize">
              <option for="{{size_list}}" value="{{$item}}">{{$item}}</option>
            </select>
          </div>
        </div>
      </div>
    </stepper-item>
  </stepper>
</div>
  

/* xxx.css */
.container {
  width:100%;
  height:100%;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background-color:#F1F3F5;
}
.dvd {
  stroke-width: 8px;
  color: orangered;
  margin: 65px;
}
.tog{
  margin-right: 20px;
  margin-top: 30px;
}
  

/* index.js */
import prompt from '@system.prompt';
import router from '@system.router';
let myset = new Set();
export default {
  data: {
    error: '',
    tcolor:'#FF4500',
    color_list:['#FF4500','#5F9EA0','#0000FF'],
    tsize: '12px',
    size_list: ['12px', '30px', '8px', '50px'],
    label1: {
      prevLabel: 'The text on the left of the starting step is invalid.',
      nextLabel: 'Toggle'
    },
    label2: {
      prevLabel: 'toggle',
      nextLabel: 'END'
    },
    togglelist1:['Program error', 'Software', 'System', 'Application'],
  },
  multiTog(arg, e) {
    this.error = ' '
    if (e.checked) {
      myset.add(arg)
    } else {
      myset.delete(arg)
    }
    for (let item of myset) {
      this.error += item + ' '
    }
  },
  settcolor(e) {
    this.tcolor = e.newValue
  },
  settsize(e) {
    this.tsize = e.newValue
  }
}
  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HarmonyOS鸿蒙开发指南:容器组建 stepper开发指导 的相关文章

  • 学习STM32正点原子好吗?

    今日话题 学习STM32正点原子好吗 正点原子的教程内容简单明了 代码也清晰直接 使初学者能够轻松理解其功能和使用方法 尤其对于需要快速完成大学作业等任务的大学生来说 可以直接借鉴并稍作修改 便可满足需求 正点原子提供的资料通俗易懂 适合用
  • 微信扫一扫,ios系统扫码失效解决

    问题场景 调用微信扫一扫的 sdk时 安卓系统没有问题 苹果系统怎么点击都没反应 解决一 扫一扫的页面 是需要给接口传递当前页面地址生成签名的 ios系统不行 不能访问根路径 的地址 访问根路径 微信会用根路径签名 签名会过不去 必须用当前
  • golang 生成一年的周数

    GetWeekTimeCycleForGBT74082005 获取星期周期 中华人民共和国国家标准 GB T 7408 2005 参数 year 年份 GB T 7408 2005 func GetWeekTimeCycleForGBT74
  • 大创项目推荐 深度学习图像风格迁移

    文章目录 0 前言 1 VGG网络 2 风格迁移 3 内容损失 4 风格损失 5 主代码实现 6 迁移模型实现 7 效果展示 8 最后 0 前言 优质竞赛项目系列 今天要分享的是 深度学习图

随机推荐

  • vue中的防抖和节流

    在Vue中 防抖和节流是两种常用的优化技术 用于限制事件的触发频率 以提高页面性能 防抖 Debounce 是指在事件被触发后 等待一段时间后再执行回调函数 如果在这段等待时间内 事件又被触发 则重新计时 防抖通常用于限制重复触发频率较高的
  • 【Vue3】2-3 : 选项式API的编程风格与优势

    本书目录 点击 进入 一 选项式API 三大优势 只有一个参数 不会出现参数顺序的问题 随意调整配置的位置 传入的是一个对象 没有参数顺序问题 对比反面教材 非常清晰 语法化特别强 非常适合添加默认值的 一 选项式API 三大优势 只有一个
  • Win11熄屏,自动断开WiFi解决方法

    一 前言 由于 我需要使用自己的电脑 远程连接服务器跑代码 电脑息屏之后 wifi断开 代码也就自动停止了 非常生气 二 解决办法 网上的办法很多都是win10 而且别人的都有电源管理 而我的没有 下面是别人的 这是我的 就是没有电源管理
  • 会stm32有机会进大公司吗?

    今日话题 会stm32有机会进大公司吗 我本科期间参与了飞思卡尔和电赛等比赛 使用过多种单片机 但渐渐发现单片机只是其中的一小部分 不要过分迷恋所谓的单片机基础和技巧 更值得深入研究的是C语言 如果你对此感兴趣 我愿意无偿分享一个资源包 其
  • 网络基础面试题(二)

    11 什么是网桥 防火墙的端口防护是指什么 网桥是一种网络设备 用于连接两个或多个局域网 LAN 并转发数据包 它能够根据MAC地址来识别和转发数据 提高网络的传输效率和安全性 防火墙的端口防护是指对防火墙上的各个端口进行保护和限制 只允许
  • 研究生写爬虫险些锒铛入狱,起因竟是为爱冲锋?

    我国目前并未出台专门针对网络爬虫技术的法律规范 但在司法实践中 相关判决已屡见不鲜 K 哥特设了 K哥爬虫普法 专栏 本栏目通过对真实案例的分析 旨在提高广大爬虫工程师的法律意识 知晓如何合法合规利用爬虫技术 警钟长鸣 做一个守法 护法 有
  • 构建免费的Dokan和WooCommerce构建线上课程市场在线销售数字课程

    我们知道创建良好的学习说明和材料很困难 但当涉及到销售时 就变得更加困难 如果您无法出售您的课程 那么没有什么比这更令人沮丧的了 幸运的是 如果您使用的是 WordPress 网站 那么您可以非常轻松且免费地完成此操作 借助LearnPre
  • 工业异常检测AnomalyGPT-Demo试跑

    写在前面 如果你有大的cpu和gpu可以使用 直接根据官方的安装说明就可以 如果没有 可以点进来试着看一下我个人的安装经验 一 试跑环境 NVIDIA4090显卡24g cpu内存33G 交换空间8g 操作系统ubuntu22 04 试跑过
  • vue的组件

    在Vue中 组件是可复用的代码块 用于构建用户界面 Vue的组件系统允许您将界面拆分为独立的 可重复使用的部件 提供了更好的代码组织和复用性 以下是在Vue中创建组件的基本步骤 创建一个组件实例 可以使用Vue extend 方法创建一个V
  • 20个精彩的WordPress会员网站案例

    点击查看原文 对在线社区和独家内容的需求正在迅速增长 这就是WordPress 会员网站 发挥作用的地方 它为网站主提供了一个强大的平台 让他们可以创建有吸引力的社区 同时通过内容获利 无论您是倾向于提供免费会员还是旨在释放盈利的全部潜力
  • 毕设开题分享 yolo深度学习动物识别

    文章目录 0 前言 1 深度学习实现动物识别与检测 2 卷积神经网络 2 1卷积层 2 2 池化层 2 3 激活函数 2 4 全连接层 2 5 使用tensorflow中keras模块实现卷积神经网络
  • 「HDLBits题解」Gates4

    本专栏的目的是分享可以通过HDLBits仿真的Verilog代码 以提供参考 各位可同时参考我的代码和官方题解代码 或许会有所收益 题目链接 Gates4 HDLBits module top module input 3 0 in out
  • uni.ownloadFile下载下来的文件没有后缀名

    let filepathss plus io convertLocalFileSystemURL data tempFilePath plus io resolveLocalFileSystemURL filepathss function
  • python ConfigParser:Python 标准库,ini 文件解析器

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 大家好 在进行接口自动化工作时 配置文件是非常常见和重要的一部分 Python 提供了一个强大的标准库 ConfigParser 用于解析和处理 INI
  • Java版商城:Spring Cloud+SpringBoot b2b2c实现多商家入驻直播带货及 免 费 小程序商城搭建的完整指南

    随着互联网的快速发展 越来越多的企业开始注重数字化转型 以提升自身的竞争力和运营效率 在这个背景下 鸿鹄云商SAAS云产品应运而生 为企业提供了一种简单 高效 安全的数字化解决方案 鸿鹄云商SAAS云产品是一种基于云计算的软件服务 旨在帮助
  • java版商城之一件代发设置 Spring Cloud+SpringBoot+mybatis+uniapp b2b2c o2o 多商家入驻商城免 费 搭 建 直播带货商城

    在数字化时代 电商行业正经历着前所未有的变革 鸿鹄云商的saas云平台以其独特的架构和先进的理念 为电商行业带来了全新的商业模式和营销策略 该平台涉及多个平台端 包括平台管理 商家端 买家平台 微服务平台等 涵盖了pc端 手机端 h5 公众
  • 从外卖员到程序员,自学3年终于转行成功,三面“拿下”拼多多

    前言 先来自我介绍 老家农村 家里好不容易把我送到大城市读书 大学非985 211 但在我们老家 能出一个本科大学生也是非常不容易的 因为农村信息的相对闭塞 我对大学专业一无所知 加上分数并非前茅 最后被调剂一个我并不喜欢的专业 这里就不透
  • 所有行业的最终归宿-知识付费saas租户平台 打造知识付费平台

    随着科技的不断进步和全球化的加速发展 我们生活在一个信息爆炸的时代 各行各业都在努力适应这一变化 寻找新的商业模式和增长机会 在这个过程中 一个趋势逐渐凸显出来 那就是知识付费 可以说 知识付费正在成为所有行业的最终归宿 明理信息科技知识服
  • HarmonyOS鸿蒙开发指南:容器组建 form开发指导

    目录 创建Form组件 实现表单缩放 设置Form样式 添加响应事件 场景示例 创建Form组件 在pages index目录下的hml文件中创建一个Form组件 div class container div
  • HarmonyOS鸿蒙开发指南:容器组建 stepper开发指导

    目录 创建Stepper组件 设置index属性 设置样式 添加事件 场景示例 创建Stepper组件 在pages index目录下的hml文件中创建一个Stepper组件 div class container div