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

Android中获取控件尺寸进阶方案

在Android开发中,很多场景都需要获取控件(View)的宽高信息,比如动态布局调整、动画效果实现等。然而,直接在ActivityonCreate()中调用控件的getWidth()getHeight()`方法,得到结果却是0,因为控件还没完成布局测量。

本文总结了几种获取控件大小的实用方法,并对各方法的适用场景和优缺点做了说明,帮助你选择最适合自己项目的方案。


1. 使用View.post()方法

这是最简单且常用的方法之一,post()会在控件布局完成后执行代码,从而确保可以获得真实尺寸。

val myView = findViewById<View>(R.id.my_view)  myView.post {  val width = myView.width  val height = myView.height  
}  

post会把代码放到消息队列,等控件布局完成后执行。


2. 使用 ViewTreeObserver.OnGlobalLayoutListener

val myView = findViewById<View>(R.id.my_view)myView.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {override fun onGlobalLayout() {myView.viewTreeObserver.removeOnGlobalLayoutListener(this)val width = myView.widthval height = myView.height}
})

监听整个视图树的布局完成,拿到尺寸后及时移除监听。


3. 重写 onWindowFocusChanged(推荐时机)

override fun onWindowFocusChanged
http://www.lryc.cn/news/2386102.html

相关文章:

  • 云原生安全之PaaS:从基础到实践的技术指南
  • MCP技术体系介绍
  • 《深入探秘:从底层搭建Python微服务之FastAPI与Docker部署》
  • 深入解析Spring Boot与JUnit 5集成测试的最佳实践
  • 我的第1个爬虫程序——豆瓣Top250爬虫的详细步骤指南
  • Selenium 测试框架 - C#
  • JavaWeb:SpringBoot工作原理详解
  • 5.25本日总结
  • OpenGL Chan视频学习-6 How Shaders Work in OpenGL
  • dify_plugin数据库中的表总结
  • 【数据仓库面试题合集④】SQL 性能调优:面试高频场景 + 调优策略解析
  • HarmonyOS学习——UIAbility组件(上)
  • 【Linux】磁盘空间不足
  • 持续更新 ,GPT-4o 风格提示词案例大全!附使用方式
  • 线性代数之张量计算,支撑AI算法的数学原理
  • QStandardItemModel的函数和信号介绍
  • Python 内存管理机制详解:从分配到回收的全流程剖析
  • 【报错】Error attempting to get column ‘created_time‘ from result set.解决方法
  • Redis 3.0~8.0特性与数据结构全面解析
  • Google 推出 Flow —— AI 电影制作新平台
  • 跨链风云:打破区块链孤岛,实现价值自由流转
  • 鸿蒙开发:了解$$运算符
  • 基于CEEMDAN-Transformer-BiLSTM的多特征风速气候预测的完整实现方案及PyTorch源码解析
  • 特征预处理
  • 第七课 医学影像学临床研究数据管理与统计分析思路
  • 基于TypeScript的全栈待办事项应用Demo
  • obsidian 中的查找和替换插件,支持正则
  • 国际荐酒师(香港)协会亮相新西兰葡萄酒巡展深度参与赵凤仪大师班
  • 【深度学习】2. 从梯度推导到优化策略:反向传播与 SGD, Mini SGD
  • 工业软件国产化:构建自主创新生态,赋能制造强国建设