android - 获取以编程方式创建的视图的估计高度

时间:2016-03-19 07:32:50

标签: android height relativelayout programmatically-created

如何在添加其中的所有视图后(即,真正可以测量的时候)以编程方式创建 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添加到外部布局之前测量高度。

1 个答案:

答案 0 :(得分:0)

您可以使用GlobalLayoutListener或OnPreDrawListener以编程方式在运行时查找视图高度。请参阅此答案以获取示例:https://stackoverflow.com/a/6569243/4898635

确保在拥有高度后移除侦听器,否则将连续调用它。