android - 首次显示前获取 View 宽度/高度或字体宽度/高度/其他尺寸

标签 android view measurement

我知道为放置进行 View 大小计算是不受欢迎的。 Android 布局管理器应该正确放置所有 View 。 然而,有一些合法的情况下,当某种计算 应该这样做以提供提示(例如 GridView 中的列数 或调整 TextView 的大小以允许在一行中显示最少数量的字符)。 对于这些情况,我想获得相关的 View 宽度/高度信息或 字体宽度/高度/等。 但是 getWidth()/getHeigth()/etc 调用永远不会返回有效值 除非 View 已在显示上呈现,但已经晚了。 这是一个 catch-22 的情况。 我想知道是否有一些方法我还没有找到(android api 很大 理解我脑海中的一切),这使得我上面描述的成为可能。

最佳答案

在计算其父 View 之前无法计算 View 的大小,但您始终可以通过对其调用 measure(allowedWidth, allowedHeight) 来强制进行此计算。然后 getMeasuredWidth() 将起作用。

参见 http://developer.android.com/reference/android/view/View.html#measure(int, int)

关于android - 首次显示前获取 View 宽度/高度或字体宽度/高度/其他尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5375631/

相关文章:

android - 无法从 https ://jcenter. bintray.com/org/webkit/android-jsc/maven-metadata.xml 加载 Maven 元数据 react 原生问题

java - 使用哪一个进行 Google Drive 集成

c++ - 使用 OpenCV 测量物体的大小

android - Paint.getTextWidths。什么是提前宽度?

java - 通过 Intent 返回 Activity 的结果

android - 横幅 - 是否有内置 View ?

python - django 在模板中显示上下文数据而不通过 url 调用 View

php - 将javascript变量从 View 发送到Codeigniter中的 Controller

c# - 如何测量 .NET 中多个并发线程的代码块(线程)执行时间

java - FragmentManager 中的 NullPointerException