写点什么

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

作者:轻口味
  • 2025-03-13
    北京
  • 本文字数:2001 字

    阅读完需:约 7 分钟

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

1、HarmonyOS swiper 组件样式?

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


@Entry@Componentstruct 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


发布于: 刚刚阅读数: 3
用户头像

轻口味

关注

🏆2021年InfoQ写作平台-签约作者 🏆 2017-10-17 加入

Android、音视频、AI相关领域从业者。 欢迎加我微信wodekouwei拉您进InfoQ音视频沟通群 邮箱:qingkouwei@gmail.com

评论

发布
暂无评论
【每日学点HarmonyOS Next知识】swiper样式、日期选择、自定义弹窗键盘、文本组件换行、富文本适配_HarmonyOS_轻口味_InfoQ写作社区