如何在添加其中的所有视图后(即,真正可以测量的时候)以编程方式创建 RelativeLayout的 高度?我以编程方式创建了应该是该RL的子项的按钮,设置它们的边距和对齐,将它们添加到RL,因此可以测量RL的高度。普通的 rl.getHeight()返回0.我使用了这段代码:
rl.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
int rlHeight=rl.getMeasuredHeight();
在Nexus 5(API 23)上,一切都还可以,但在其他具有API 17的设备上(我记得,4.2或其他)它会抛出NPE。怎么办?
P.S。 OnGlobalLayoutListener和OnPreDrawListener都不行,因为我需要在调用setParams(...)并将RL添加到外部布局之前测量高度。
答案 0 :(得分:0)
您可以使用GlobalLayoutListener或OnPreDrawListener以编程方式在运行时查找视图高度。请参阅此答案以获取示例:https://stackoverflow.com/a/6569243/4898635
确保在拥有高度后移除侦听器,否则将连续调用它。