gpt4 book ai didi

android - 如何判断布局何时绘制?

转载 作者:IT老高 更新时间:2023-10-28 12:53:31 25 4
gpt4 key购买 nike

我有一个自定义 View ,可以将可滚动位图绘制到屏幕上。为了初始化它,我需要传入父布局对象的像素大小。但是在onCreate和onResume函数中,Layout还没有被绘制出来,所以layout.getMeasuredHeight()返回0。

作为一种解决方法,我添加了一个处理程序来等待一秒钟然后进行测量。这可行,但它很草率,我不知道在绘制布局之前我可以修剪多少时间。

我想知道的是,如何检测布局何时绘制?有事件或回调吗?

最佳答案

您可以在布局中添加树观察者。这应该返回正确的宽度和高度。 onCreate() 在 subview 布局完成之前调用。所以宽度和高度还没有计算出来。要获取高度和宽度,请将其放在 onCreate() 方法中:

    final LinearLayout layout = (LinearLayout) findViewById(R.id.YOUR_VIEW_ID);
ViewTreeObserver vto = layout.getViewTreeObserver();
vto.addOnGlobalLayoutListener (new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
layout.getViewTreeObserver()
.removeOnGlobalLayoutListener(this);
} else {
layout.getViewTreeObserver()
.removeGlobalOnLayoutListener(this);
}
int width = layout.getMeasuredWidth();
int height = layout.getMeasuredHeight();

}
});

关于android - 如何判断布局何时绘制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7733813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com