我有一个显示地图和列表视图的片段。地图占据了视图的顶部(大约)2/3,而listview占据了剩余的1/3。在设置后,我无法访问列表视图的高度。
我在listview上调用了getHeight(),但尚未设置。
是否有" onListPopulated"方法或其他东西,我可以用它来设置它后的高度?
我已经覆盖了片段中的oncreate和oncreateview,但它还没有被设置。
答案 0 :(得分:2)
Android做了两遍布局。第一个定义了事物,第二个定义了高度/宽度等。如果你试图通过onCreate()或onCreateView(0方法)获得视图的高度,它们将不会看到它作为两个通道这些方法运行时还没有完成。相反,你需要在视图上用.post做一个runnable,如下所示:
// use post - runnable to get height of view before it's actually shown
level3Frame.post( new Runnable() {
@Override
public void run() {
final int halfMargin = level3Frame.getHeight()/2;
<snip>
}
});
level3Frame是我需要高度的视图。在所有布局发生后,在视图的.post上创建runnable意味着您可以从现在完全渲染的视图中获取高度或其他任何可能需要的内容。