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

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.xdnf.cn/news/8608.html

相关文章:

  • 【MySQL】06.内置函数
  • 机器学习第二十六讲:官方示例 → 跟着菜谱学做经典菜肴
  • spring boot 2.7集成旧的springfox-boot-starter swagger oas 3.0
  • 论文阅读笔记——Emerging Properties in Unified Multimodal Pretraining
  • 超全GPT-4o 风格提示词案例,持续更新中,附使用方式
  • 行为型:迭代器模式
  • java面试题
  • 物联网代理暴利逻辑拆解:格行随身WiFi三网切换技术实战分析
  • 机器学习中的多GPU训练模式
  • 向量数据库Milvus03-高级功能与性能调优
  • 7:QT加载保存参数(读写日志)
  • JS逆向 - 狗dong参数Log及joyytokem(补环境)
  • Groovy:Java 的简洁版
  • python web 开发-Flask-Login使用详解
  • 构建安全AI风险识别大模型:CoT、训练集与Agent vs. Fine-Tuning对比
  • 每日leetcode(昨天赶飞机没做,今天补)
  • 深入理解 Redis 哨兵模式
  • H3C-W2000-G2【透明反代理】
  • Nacos适配GaussDB超详细部署流程
  • 【数据结构初阶】顺序表专题
  • 在Rockchip平台上利用FFmpeg实现硬件解码与缩放并导出Python接口
  • Selenium 测试框架 - Python
  • SpringCloud实战:使用Sentinel构建可靠的微服务熔断机制
  • 从 0 开始部署 Archivematica (windows环境)
  • RabbitMQ 概述
  • 【C/C++】多线程开发:wait、sleep、yield全解析
  • 国标GB28181设备管理软件EasyGBS打造厨房全方位实时监控解决方案
  • CC工具箱使用指南:【平行线两端闭合】
  • kali的简化安装
  • 水利水电安全员考试的案例分析题一般涉及哪些方面的知识?