Android 我如何知道何时绘制视图?
我的Android 我如何知道何时绘制视图?,android,view,Android,View,我的活动布局有视图,我在程序开始时得到了该视图的Y位置,但是如果我要在底部方法onCreate中插入,我得到了位置值=0。我怎么知道,当视图被绘制出来,并得到她的Y位置。当我点击按钮时,我尝试获得Y位置,位置得到良好,但我没有使用按钮获得位置 我得到一个职位: private float cardsStartPosition = 0; if (cardsStartPosition == 0) { cardsStartPosition = commonCardContainer.getY(
活动
布局有视图
,我在程序开始时得到了该视图的Y位置,但是如果我要在底部方法onCreate
中插入,我得到了位置值=0
。我怎么知道,当视图被绘制出来,并得到她的Y位置。当我点击按钮时,我尝试获得Y位置,位置得到良好,但我没有使用按钮获得位置
我得到一个职位:
private float cardsStartPosition = 0;
if (cardsStartPosition == 0) {
cardsStartPosition = commonCardContainer.getY();
}
感谢您的回答。将全局布局侦听器添加到您的视图中,当布局完成且视图具有维度时,您将收到通知
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//Here you can get your dimensions
int width = view.getWidth();
//View.removeOnGlobalLayoutListener(this);
}
});
将全局布局侦听器添加到视图中,当布局完成且视图具有维度时,您将收到通知
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//Here you can get your dimensions
int width = view.getWidth();
//View.removeOnGlobalLayoutListener(this);
}
});
将全局布局侦听器添加到视图中,当布局完成且视图具有维度时,您将收到通知
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//Here you can get your dimensions
int width = view.getWidth();
//View.removeOnGlobalLayoutListener(this);
}
});
将全局布局侦听器添加到视图中,当布局完成且视图具有维度时,您将收到通知
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//Here you can get your dimensions
int width = view.getWidth();
//View.removeOnGlobalLayoutListener(this);
}
});
试试这个方法,我觉得很好
ViewTreeObserver vto = YourView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//do your stuff here
}
});
试试这个方法,我觉得很好
ViewTreeObserver vto = YourView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//do your stuff here
}
});
试试这个方法,我觉得很好
ViewTreeObserver vto = YourView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//do your stuff here
}
});
试试这个方法,我觉得很好
ViewTreeObserver vto = YourView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//do your stuff here
}
});
你提到的只是风景。因此,如果这意味着它是您的自定义视图,您可以覆盖
onLayout()
:
这样,您可以观察视图的任何布局更改。如果您还对大小更改感兴趣,还有onSizeChanged()
:
若这不是你们的自定义视图,我会选择Ketan Ahir的方式。你们提到的只是视图。因此,如果这意味着它是您的自定义视图,您可以覆盖
onLayout()
:
这样,您可以观察视图的任何布局更改。如果您还对大小更改感兴趣,还有onSizeChanged()
:
若这不是你们的自定义视图,我会选择Ketan Ahir的方式。你们提到的只是视图。因此,如果这意味着它是您的自定义视图,您可以覆盖
onLayout()
:
这样,您可以观察视图的任何布局更改。如果您还对大小更改感兴趣,还有onSizeChanged()
:
若这不是你们的自定义视图,我会选择Ketan Ahir的方式。你们提到的只是视图。因此,如果这意味着它是您的自定义视图,您可以覆盖
onLayout()
:
这样,您可以观察视图的任何布局更改。如果您还对大小更改感兴趣,还有onSizeChanged()
:
若这不是你们的习惯观点,我会按照凯坦·阿希尔的方式去做