【发布时间】:2019-05-23 02:12:49
【问题描述】:
我有 5 个线性布局。为了便于书写和理解,我将它们称为视图 A - E。
视图 A 是视图 B、C、D 和 E 的父视图。
我已将视图 A 的 layout_weight 设置为 8.0f,并将视图 B - E 的权重分别设置为 1.0f、3.0f、1.0f、3.0f。
我知道这是为了管理父视图中的空白空间,但我希望调整我的视图和子视图的大小以占据屏幕的百分比,而不是仅仅争夺可用空间。
但是,这一切都是以编程方式完成的,所以我是否应该将 LinearLayouts 的高度设置为其父级(视图 A)的 getHeight() 方法/访问器的系数?如果是这样,那么如果尚未将视图添加到其父级,我如何获取父级的高度,这将使用 MATCH_PARENT 设置其高度?
由于getHeight() 方法将为onCreate、onStart 和第一个onResume 返回0,我不得不继续寻找答案。我找到了ViewTreeObserver 和OnGlobalLayoutListener,它们会在设置Layouts 时通知我。但是,我真的很感激在任何绘图发生之前有高度。这不可能吗?
【问题讨论】:
-
我已经成功在片段中的onViewCreated中测量了屏幕。所以你可以用片段填充父级,然后在片段中绘制你的布局。
标签: android android-layout android-layout-weight