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

【每日学点HarmonyOS Next知识】swiper样式、日期选择、自定义弹窗键盘、文本组件换行、富文本适配

1、HarmonyOS swiper组件样式?

可在样式中设置即可,参考如下demo

@Entry
@Component
struct SwiperDemo {
  private swiperController: SwiperController = new SwiperController();

  build() {
    Column({ space: 5 }) {
      Swiper(this.swiperController) {
        Text('0')
          .width(250)
          .height(250)
          .backgroundColor(Color.Gray)
          .textAlign(TextAlign.Center)
          .fontSize(30)
        Text('1')
          .width(250)
          .height(250)
          .backgroundColor(Color.Green)
          .textAlign(TextAlign.Center)
          .fontSize(30)
        Text('2')
          .width(250)
          .height(250)
          .backgroundColor(Color.Pink)
          .textAlign(TextAlign.Center)
          .fontSize(30)
      }
      .indicator(true)
      .margin({right:60})

      Row({ space: 12 }) {
        Button('showNext')
          .onClick(() => {
            this.swiperController.showNext(); // 通过controller切换到后一页
          })
        Button('showPrevious')
          .onClick(() => {
            this.swiperController.showPrevious(); // 通过controller切换到前一页
          })
      }.margin(5)
    }.width('100%')
    .margin({ top: 5 })
  }
}
2、HarmonyOS DatePickerDialog. 返回的数据?

DatePickerDialog. 返回的数据

setFullYear方法默认月份值从0开始,单独取出来值时需要加1

3、HarmonyOS 自定义弹窗、自定义键盘自动关闭问题?

通过CustomDialogController弹出一个自定制的弹窗内容。请问,自定义弹窗是否可以实现以下效果:假设弹窗未覆盖区域有很多其他视图,如滚动视图、按钮等,希望这些视图发生点击、长按、滚动时能够自动关闭弹窗,这些视图的事件很零散,在每个事件中都插入关闭弹窗的代码有些不现实。autoCancel设置为true时,能够优先关闭弹窗,但是会拦截一次用户操作,如弹窗弹出时,点击一个按钮,会先关闭弹窗,第二次点击时才能触发按钮点击事件,这种交互不符合期望。期望能够一次点击,既触发按钮事件,也能够关闭弹窗。

首先对于自定义键盘的问题,输入框类的组件在customKeyboard()方法中在输入控件失去焦点时,关闭自定义键盘,可以通过stopEditing方法控制键盘的关闭,以TextInput组件为例,可以参考以下文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-textinput-V5#ZH-CN_TOPIC_0000001884917738__customkeyboard10

其次,对于自定义弹窗问题,当前可以使用onWillDismiss()回调结合业务方自行设计处理逻辑实现关闭弹窗且触发事件,比如:通过监听CustomDialogController的onWillDismiss()回调,在回调中判断DismissDialogAction的reason属性为TOUCH_OUTSIDE:

onWillDismiss:(dismissDialogAction: DismissDialogAction)=> {
  if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) {
    dismissDialogAction.dismiss()
    // 接着由业务方自行处理后续逻辑
  }
}

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-methods-custom-dialog-box-V5
在上面监听到点击遮罩层时,先让自定义弹窗消失,然后可以通过事件通知的形式发送事件,在事件订阅处处理接收到的事件,可以根据不同的事件ID或者是传递的不同的data来区分不同组件需要处理的事件逻辑,不同组件的事件逻辑通过定义不同的方法处理:

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-emitter-V5

4、HarmonyOS Text组件的wordBreak换行破发点咨询?

Text组件的wordBreak换行破发点除了空格还有什么?部分场景的换行破发点可能在”,“或者“,”; 会导致一整段字符串换行的情况。如果用BreakALL的话,有些标题断句会有点歧义 比如12kg 第一行末尾是1 第二行开头是2kg,但是BreakWord的话,换行破发点好像又只出现在空格处。

建议是用WordBreak.BREAK_WORD,API的说明:Non-CJK text can be wrapped at any character and if a complete word can be preserved in space breaks, the word must be kept on the line.说明这里是有一个灵活判断的,不仅仅是针对空格处换行这么简单,可以明确看到换行会对一行的最后一个字符做校验(区分非CJK和CJK字符),非CJK字符会任意打断,同WordBreak.BREAK_ALL,CJK字符会保持同一语义的字符在一行,所以明显对于中文和英文混合的场景,WordBreak.BREAK_WORD更合适一些

5、HarmonyOS ide中富文本中图片适配?

可以使用RichEditor组件,该组件是支持图文混排和文本交互式编辑的组件,文档如下:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-richeditor-V5

相关文章:

  • AI代理的高效助手:Composio工具集详解
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(二)
  • 《第三选择》:撕掉“非黑即白”,解锁人生隐藏副本✨
  • C++STL的六大部件和联系
  • 刷题记录(LeetCode 78 子集)
  • 聚焦两会:科技与发展并进,赛逸展2025成创新新舞台
  • 1-002:MySQL InnoDB引擎中的聚簇索引和非聚簇索引有什么区别?
  • Cline使用MCP-TypeScript版本
  • springboot 修复 Spring Framework 特定条件下目录遍历漏洞(CVE-2024-38816)
  • 时序和延时
  • Linux——system V共享内存
  • 电子电气架构 ---常见车规MCU安全启动方案
  • Python第十六课:深度学习入门 | 神经网络解密
  • Python与AI的深度渊源:从历史交融到技术革新
  • 【Zinx】Day5-Part4:Zinx 的连接属性设置
  • vue2项目开启br压缩
  • L1-017 到底有多二
  • C语言学习总结
  • ONLYOFFICE AI 功能升级:3月11日直播揭秘!
  • Ubuntu 24.04.2 允许 root 登录桌面、 ssh 远程、允许 Ubuntu 客户机与主机拖拽传递文件
  • 专门做美食的视频网站/网络推广竞价是什么
  • 留言板网站怎么做/北京做seo的公司
  • 购物网站代码/永久免费crm客户管理系统
  • 网站建设销售提成/网站百度收录批量查询
  • 百度网盘做自已网站/北京网站seo招聘
  • 品牌广告设计制作公司网站源码/aso关键词覆盖优化