我们可以在onCreate()中获得视图高度。这里我试图使用view.getHeight()找到视图的高度,但它在debuger中显示0
答案 0 :(得分:1)
您可以在创建View类时找到它的高度。换句话说,你必须在View#post()方法中计算它。
view.post(new Runnable() {
@Override
public void run() {
// Find height here
// e.g
// view.getHeight();
}
});
答案 1 :(得分:0)
ViewTreeObserver会因不同的绘图事件而被触发。通常,OnGlobalLayoutListener是您获得测量所需的内容
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
view.getHeight(); //height is ready
}
});
答案 2 :(得分:0)
你似乎在问两个不同的问题。一旦布局膨胀,您的视图就会实例化。这意味着,在致电setContentView()
后,您可以立即使用findViewById()
检索它们并在其上调用方法(例如setText()
等)。
然而,虽然此时存在视图,但它们尚未布局。只有在视图通过布局传递后,它们才会有位置和尺寸的实际值。
正如Ayush的回答所说,通过为您感兴趣的视图注册ViewTreeObserver.OnGlobalLayoutListener
,可以在布局传递完成时收到通知。