HarmonyOS鸿蒙Next中ArkUI eTS组件Hyperlink存在的问题及使用建议
HarmonyOS鸿蒙Next中ArkUI eTS组件Hyperlink存在的问题及使用建议 本节讲解ArkUI eTS组件Hyperlink的使用方法,对于目前Hyperlink组件Beta版存在的问题,给出了使用建议。
做B/S架构开发的同学,应该很熟悉超级链接组件“a”,通常,链接到另一个网页,写法如下:
<a href="http://www.baidu.com" title="百度" />
而在ArkUI eTS官方提供的组件中有一个和它对标的组件Hyperlink。该组件的接口写法为:
Hyperlink(address: string, content?: string)
其中接口参数"address"对标"href",可选参数content对标"title"。
示例代码如下:
/**
* 接口:Hyperlink(address: string, content?: string)
* address: string hyperlink组件跳转的网页。
* content: string hyperlink组件中超链接显示文本。
*/
Hyperlink('https://ost.51cto.com/person/posts/15589203', '鸿蒙开发之南拳北腿') {
Image($r("app.media.cover"))
.width("100%")
.aspectRatio(1.5)
.borderRadius($r("app.float.radius_L"))
}
本地预览器只能查看界面效果,无法跳转网页,所以建议在远程模拟器测试,效果如下:
我们发现,接口参数“content”的文本“鸿蒙开发之南拳北腿”是没有显示的,点击图片后,打开浏览器,进入了参数“address”指向的网页。
在上述示范代码中,我放了一个子组件Image。但是,如果我再放入一个子组件呢?说干就干,我在Image组件后面放入一行代码:
Text('鸿蒙开发ArkUI最佳实践')
神奇的一幕发生了:在本地预览器和远程模拟器中发现,接口参数“content”的文本居然出现了!
让人不能接受的是,这个文本字号大小不可控制,文字颜色也不可控制,在深色模式下直接就看不到了。当然,目前Hyperlink组件还处于Beta版阶段,有点小瑕疵,也是可以理解的,希望华为的同学能在Release版时优化下这个问题。
“问题”还没有完。我们给新增加的Text组件加入一点样式,代码如下:
Text('鸿蒙开发ArkUI最佳实践')
.fontColor($r("app.color.fgLevel1"))
.fontSize($r("app.float.fontSizeH8"))
.fontWeight(Number($r("app.float.fontWeightH8")))
我们对比下浅色模式和深色模式下的效果:
原本适配深色模式的文字,在深色模式下不再显示白色文字了!我猜,这与Hyperlink组件的color属性有关。
官方文档中对color属性的描述是: 当子组件中有文本和图片时,设置文本和图片的颜色。
可能即使未设置color属性,Hyperlink组件的color属性默认值也会作用于其子组件。那么,如何破局?代码修改如下:
Hyperlink('https://ost.51cto.com/person/posts/15589203', '鸿蒙开发之南拳北腿') { // Hyperlink接口
Image($r("app.media.cover"))
.width("100%")
.aspectRatio(1.5)
.borderRadius($r("app.float.radius_L"))
Text('鸿蒙开发ArkUI最佳实践')
.fontSize($r("app.float.fontSizeH8"))
.fontWeight(Number($r("app.float.fontWeightH8")))
}.color($r("app.color.fgLevel1"))
效果如下:
"app.color.fgLevel1"这个资源颜色在浅色模式下显示为黑色,在深色模式下显示为白色。现在文字显示合理了,但图片被影响了。
对于Hyperlink组件的使用,我的建议是:不要设置接口参数“content”;同时,在其容器中只放一个子组件,以免互相影响;最后,文本链接的颜色,需要通过Hyperlink的color属性设置。上述代码改造如下:
/**
* 接口:Hyperlink(address: string, content?: string)
* address: string hyperlink组件跳转的网页。
* content: string hyperlink组件中超链接显示文本。
*/
Hyperlink('https://ost.51cto.com/person/posts/15589203') { // Hyperlink接口
Image($r("app.media.cover"))
.width("100%")
.aspectRatio(1.5)
.borderRadius($r("app.float.radius_L"))
}
/**
* 属性:color:color 当子组件中有文本和图片时,设置文本和图片的颜色。
*/
Hyperlink('https://ost.51cto.com/person/posts/15589203') {
Text('鸿蒙开发ArkUI最佳实践')
.fontSize($r("app.float.fontSizeH8"))
.fontWeight(Number($r("app.float.fontWeightH8")))
.decoration({ type: TextDecorationType.Underline })
}.color($r("app.color.info")) // 属性:color
浅色模式和深色模式下的效果如下:
【源码地址:https://gitee.com/cloudev/harmonyos3/tree/master/3.0/BaseComponent 】
更多关于HarmonyOS鸿蒙Next中ArkUI eTS组件Hyperlink存在的问题及使用建议的实战教程也可以访问 https://www.itying.com/category-93-b0.html
开发者你好,感谢你的反馈,请持续关注HarmonyOS官方消息。
更多关于HarmonyOS鸿蒙Next中ArkUI eTS组件Hyperlink存在的问题及使用建议的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,ArkUI eTS组件的Hyperlink存在以下问题:
- 样式自定义受限:Hyperlink组件的样式自定义能力有限,无法完全满足复杂UI设计需求。
- 事件处理不完善:Hyperlink的事件处理机制在某些场景下表现不稳定,可能导致点击事件无法正确触发。
- 跨平台兼容性差:在不同设备或屏幕尺寸上,Hyperlink的显示效果可能存在差异,影响用户体验。
- 性能问题:在大量使用Hyperlink的页面中,可能会出现性能瓶颈,导致页面加载速度变慢。
使用建议:
- 合理使用样式:尽量使用系统提供的默认样式,避免过度自定义导致兼容性问题。
- 优化事件处理:在事件处理逻辑中加入异常捕获机制,确保点击事件能够稳定触发。
- 测试跨平台兼容性:在不同设备和屏幕尺寸上进行充分测试,确保Hyperlink的显示效果一致。
- 性能优化:在大量使用Hyperlink的页面中,考虑使用懒加载或分页技术,提升页面加载速度。
在HarmonyOS鸿蒙Next中,ArkUI eTS组件的Hyperlink存在以下问题及使用建议:
问题:
- 样式自定义受限:Hyperlink的默认样式较为固定,难以完全自定义外观。
- 交互反馈不足:点击后的视觉反馈不够明显,用户体验有待提升。
- 跨平台兼容性:在某些设备或系统版本上,Hyperlink的行为可能不一致。
使用建议:
- 结合自定义组件:通过封装自定义组件,增强Hyperlink的样式和交互效果。
- 增加反馈机制:在点击事件中添加动画或颜色变化,提升用户感知。
- 测试多平台兼容性:确保在不同设备和系统版本上,Hyperlink的功能和表现一致。
通过以上优化,可以提升Hyperlink组件的用户体验和开发效率。