Android获取View宽高

在Activity生命周期函数中

onCreate(...)

onResume()

获取不到View的实际大小。

```

view.getWidth()

view.getHeight()

```

根本原因在于控件还没有完成绘制。

系统将何时绘制完View时呢?

将一个runnable添加到Layout队列中:View.post(new Runnable())

简单地说,在Runnable中实现run方法,View的measure、layout等事件后触发run

View.post(new runnable(

//这里实现回调方法

));

UI事件队列会按顺序处理事件。

在setContentView()被调用后,事件队列中会包含一个要求重新layout的message,所以任何你post到队列中的东西都会在Layout发生变化后执行。

final View view=//smth;

view.post(new Runnable() {

@Override

public void  run() {

view.getHeight();//height is ready

}

});

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容