【Android】在渲染生效前提前测量View大小

问题

Android的UI机制是基于MessageHandler的,View并不会在添加后就会被立刻测量渲染出来

但有时我们需要动态去计算布局,希望在添加View时,就能知道这个View的高度

方法

此时,我们可以手动去调用measure方法,来测量View大小

measure方法需要提供两个spec,我们根据实际情况自己去创建

代码
kotlin 复制代码
view.measure(
  MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
  MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
)
// optional
view.layout(0, 0, view.measuredWidth, view.measuredHeight)
view.requestLayout()
view.invalidate()
相关推荐
Che2n3JigW13 小时前
Now in Android:它不是最佳实践,而是大型 Android 工程实践的展示
android·architecture·now in android
故渊at13 小时前
第三板块:Android 图形渲染与窗口体系 | 第十三篇:SurfaceFlinger 与 VSYNC 信号机制
android·图形渲染·surfaceflinger·帧率·窗口体系
Che2n3JigW13 小时前
Now in Android Feature 模块分析:一个功能是如何被组织起来的?
android·udf·architecture·now in android·modularization·feature module
Che2n3JigW13 小时前
Now in Android 项目结构分析:这个 App 是如何搭建起来的?
android·architecture·now in android·modularization·structure
恋猫de小郭14 小时前
flutter_agent_lens 用 MCP 服务,将 Flutter DevTools 暴露给 AI
android·前端·flutter
AI玫瑰助手14 小时前
Python函数:内置函数(len/max/min/sorted等)详解
android·开发语言·python
Kapaseker14 小时前
Kotlin 集合:只读不等于不可变
android·kotlin
风华圆舞14 小时前
一个 Flutter 项目同时保留 Android、iOS、HarmonyOS 支持的实践
android·flutter·ios
顾林海14 小时前
Android来时路:Android 是什么
android
2501_9159214314 小时前
uni-app 上架 iOS 的完整流程(无需依赖 Mac)
android·macos·ios·小程序·uni-app·iphone·webview