首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

鸿蒙NEXT版实战开发:UI框架-如何获取组件宽高和组件在屏幕上的位置

  • 25-03-07 14:21
  • 2509
  • 9554
blog.csdn.net

往期鸿蒙全套实战精彩文章必看内容:

  • 鸿蒙开发核心知识点,看这篇文章就够了

  • 最新版!鸿蒙HarmonyOS Next应用开发实战学习路线

  • 鸿蒙HarmonyOS NEXT开发技术最全学习路线指南

  • 鸿蒙应用开发实战项目,看这一篇文章就够了(部分项目附源码)


如何获取组件宽高和组件在屏幕上的位置

方法一:可以使用componentUtils.getRectangleById,根据组件ID获取组件实例对象,通过组件实例对象将获取的坐标位置和大小同步返回给开发者。

getRectangleById的返回结果是ComponentInfo,包含组件大小、位置、平移缩放旋转及仿射矩阵属性信息。

具体可以参考如下代码:

  1. import { componentUtils } from '@kit.ArkUI';
  2. @Entry
  3. @Component
  4. struct Page {
  5. @State arr: Array<number> = [1, 2, 3, 4, 5];
  6. build() {
  7. Column() {
  8. List() {
  9. ForEach(this.arr, (item: number) => {
  10. ListItem() {
  11. Text(item.toString())
  12. .fontSize(24)
  13. .id(item.toString())
  14. }
  15. .height(100)
  16. })
  17. }
  18. .height('50%')
  19. .alignListItem(ListItemAlign.Center)
  20. Button('获取组件位置').onClick(() => {
  21. let obj: componentUtils.ComponentInfo = componentUtils.getRectangleById('2');
  22. console.log("demoTest:" + JSON.stringify(obj));
  23. })
  24. }
  25. }
  26. }

方法二:在组件尺寸发生变化时,需要使用onAreaChange可以响应由布局变化所导致的组件大小、位置发生变化时的回调,其中newValue返回目标元素变化之后的宽高以及目标元素相对父元素和页面左上角的坐标位置。

  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct AreaExample {
  5. @State value: string = 'Text';
  6. @State sizeValue: string = '';
  7. build() {
  8. Column() {
  9. Text(this.value)
  10. .backgroundColor(Color.Green).margin(30).fontSize(20)
  11. .onClick(() => {
  12. this.value = this.value + 'Text'
  13. })
  14. .onAreaChange((oldValue: Area, newValue: Area) => {
  15. console.info(`Ace: on area change, oldValue is ${JSON.stringify(oldValue)} value is ${JSON.stringify(newValue)}`)
  16. this.sizeValue = JSON.stringify(newValue)
  17. })
  18. Text('new area is: \n' + this.sizeValue).margin({ right: 30, left: 30 })
  19. }
  20. .width('100%').height('100%').margin({ top: 30 })
  21. }
  22. }


​

鸿蒙5.0进阶全套学习资料
微信名片
注:本文转载自blog.csdn.net的那只斑马不睡觉的文章"https://blog.csdn.net/qq_39652397/article/details/143406370"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

135
HarmonyOS
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top