【HarmonyOS NEXT】鸿蒙开发:搜刮栏历史记载以及删除记载 ...

打印 上一主题 下一主题

主题 927|帖子 927|积分 2781

实现效果




准备数据

  1. // 状态变量,存储音乐名称的数组
  2.   @State music: string[] =
  3.     ['句号', '泡沫', '星星', '奢香夫人', '虹之间', '奢香夫人', '倒数', '最佳损友', '富士山下', 'Sweet Dreams']
  4.   // 状态变量,用于控制管理模式的开关
  5.   @State isManage: boolean = false
复制代码
 搜刮框

 一个搜刮框,用户可以输入关键字举行搜刮。
  1. // 搜索框
  2.       Search({ placeholder: '请输入关键字...' })  // 搜索框配置,设置占位提示文本
  3.       .searchButton('搜索')  // 设置搜索按钮的文本
  4.       .width(300)  // 设置搜索框宽度
  5.       .height(40)  // 设置搜索框高度
  6.       .backgroundColor('#F5F5F5')  // 设置搜索框背景颜色
  7.       .onSubmit((value: string) => {  // 定义搜索提交时的回调函数
  8.           this.music.unshift(value)  // 将搜索值添加到音乐数组的开头
  9.         })
复制代码

搜刮历史记载的展示

一行文本,分别表现"搜刮历史"和一个根据 isManage 状态切换表现"管理"或"关闭管理"的文本,点击该文本可以切换 isManage 的状态。
通过Flex布局和循环,为每个音乐名称创建一个 Chip 元素。Chip 元素具有特定的标签文本样式、尺寸、是否答应关闭等属性,并且这些属性会根据 isManage 的状态举行相应的调整。
 
  1.       Row() {  // 行布局
  2.         Text('搜索历史')  // 显示"搜索历史"文本
  3.         Text(this.isManage? '关闭管理' : '管理')  // 根据管理状态显示相应文本
  4.          .onClick(() => {  // 点击文本时的回调函数
  5.             this.isManage =!this.isManage  // 切换管理状态
  6.           })
  7.       }
  8.      .width('90%')  // 设置行宽度为 90%
  9.      .justifyContent(FlexAlign.SpaceBetween)  // 设置行内元素两端对齐
  10.       Flex({ wrap: FlexWrap.Wrap }) {  // 弹性布局,允许换行
  11.         ForEach(this.music, (item: string) => {  // 遍历音乐数组
  12.           Row() {  // 行布局
  13.             Chip({  // 芯片组件配置
  14.               label: {  // 标签配置
  15.                 text: item,  // 标签文本
  16.                 fontSize: 12,  // 字体大小
  17.                 fontColor: Color.Blue,  // 字体颜色
  18.                 fontFamily: "HarmonyOS Sans",  // 字体家族
  19.                 labelMargin: { left: 10, right: 10 }  // 标签边距
  20.               },
  21.               size: ChipSize.SMALL,  // 芯片尺寸为小
  22.               allowClose: this.isManage,  // 是否允许关闭,取决于管理状态
  23.               enabled: true,  // 启用状态
  24.               backgroundColor: $r('sys.color.ohos_id_color_button_normal'),  // 背景颜色
  25.               borderRadius: $r('sys.float.ohos_id_corner_radius_button'),  // 边框圆角
  26.               onClose: () => {  // 关闭芯片时的回调函数
  27.                 console.log("chip on close")
  28.               },
  29.               onClicked: () => {  // 点击芯片时的回调函数
  30.                 console.log("chip on clicked")
  31.                 //TODO 搜索label的内容
  32.               }
  33.             })
  34.           }.padding(5)  // 设置内边距为 5
  35.         })
  36.       }
  37.      .padding({ left: 5, right: 5 })  // 整体设置左右内边距为 5
复制代码

完整代码

  1. import { Chip, ChipSize } from '@kit.ArkUI';
  2. /**
  3. * Index 组件结构体
  4. */
  5. @Entry
  6. @Component
  7. struct Index {
  8.   /**
  9.    * 状态变量,存储音乐名称的数组
  10.    */
  11.   @State music: string[] =
  12.     ['句号', '泡沫', '星星', '奢香夫人', '虹之间', '奢香夫人', '倒数', '最佳损友', '富士山下', 'Sweet Dreams']
  13.   /**
  14.    * 状态变量,用于控制管理模式的开关
  15.    */
  16.   @State isManage: boolean = false
  17.   /**
  18.    * 构建组件的方法
  19.    */
  20.   build() {
  21.     Column({ space: 10 }) { // 列布局,设置间距为 10
  22.       // 搜索框
  23.       Search({ placeholder: '请输入关键字...' })// 搜索框配置,设置占位提示文本
  24.         .searchButton('搜索')// 设置搜索按钮的文本
  25.         .width(300)// 设置搜索框宽度
  26.         .height(40)// 设置搜索框高度
  27.         .backgroundColor('#F5F5F5')// 设置搜索框背景颜色
  28.         .onSubmit((value: string) => { // 定义搜索提交时的回调函数
  29.           this.music.unshift(value) // 将搜索值添加到音乐数组的开头
  30.         })
  31.       Row() { // 行布局
  32.         Text('搜索历史') // 显示"搜索历史"文本
  33.         Text(this.isManage ? '关闭管理' : '管理')// 根据管理状态显示相应文本
  34.           .onClick(() => { // 点击文本时的回调函数
  35.             this.isManage = !this.isManage // 切换管理状态
  36.           })
  37.       }
  38.       .width('90%') // 设置行宽度为 90%
  39.       .justifyContent(FlexAlign.SpaceBetween) // 设置行内元素两端对齐
  40.       Flex({ wrap: FlexWrap.Wrap }) { // 弹性布局,允许换行
  41.         ForEach(this.music, (item: string) => { // 遍历音乐数组
  42.           Row() { // 行布局
  43.             Chip({
  44.               // 芯片组件配置
  45.               label: {
  46.                 // 标签配置
  47.                 text: item, // 标签文本
  48.                 fontSize: 12, // 字体大小
  49.                 fontColor: Color.Blue, // 字体颜色
  50.                 fontFamily: "HarmonyOS Sans", // 字体家族
  51.                 labelMargin: { left: 10, right: 10 }  // 标签边距
  52.               },
  53.               size: ChipSize.SMALL, // 芯片尺寸为小
  54.               allowClose: this.isManage, // 是否允许关闭,取决于管理状态
  55.               enabled: true, // 启用状态
  56.               backgroundColor: $r('sys.color.ohos_id_color_button_normal'), // 背景颜色
  57.               borderRadius: $r('sys.float.ohos_id_corner_radius_button'), // 边框圆角
  58.               onClose: () => { // 关闭芯片时的回调函数
  59.                 console.log("chip on close")
  60.               },
  61.               onClicked: () => { // 点击芯片时的回调函数
  62.                 console.log("chip on clicked")
  63.                 //TODO 搜索label的内容
  64.               }
  65.             })
  66.           }.padding(5) // 设置内边距为 5
  67.         })
  68.       }
  69.       .padding({ left: 5, right: 5 }) // 整体设置左右内边距为 5
  70.     }
  71.     .width('100%') // 列布局宽度为 100%
  72.   }
  73. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

八卦阵

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表