【发布时间】:2019-02-26 12:24:12
【问题描述】:
假设我们有一个 main_activity.xml 布局,它以相对方式定义所有维度——约束、百分比和指南(即百分比)...没有“静态”dp。
但在 MainActivity.java 中,我们以编程方式创建了一些子视图,并且我们希望将它们的高度/宽度尺寸定义为相对于现有视图。
我们不知道设备的尺寸或密度,所以我们也不知道运行时之前任何视图的(实际整数)尺寸......
但我们可以这样说:
int heightDimensionForNewView = (int) (someAlreadyInflatedView.getHeight() / 7f)
但是,如果在某些情况下,这些“新”视图需要在应用启动时立即显示呢?
那么问题来了:
在 Android Activity 生命周期中,您可以(以某种方式)安全地查询(某物)实际/最终/保证布局尺寸的最早时间点是什么时候?那是什么东西?
我无法找到诸如“onContentViewInflated()”之类的覆盖方法,并且没有像 Fragments 中那样的 onCreateView() 方法。
我也尝试过从 onStart() 和 onResume() 内部记录,但维度结果始终为“0”,大概是因为它们尚未膨胀。
我知道任何给定的 View 都可以在 onMeasure() 中获得自己的维度,但是您必须在 MainActivity 中创建一个静态变量以便分配它并从那里使用它......或者以某种方式发送该信息从 View 回到 Activity。
我错过了什么?我只是希望能够以某种方式从 MainActivity 本身获取数字。
【问题讨论】:
标签: android user-interface layout view dimensions