Android获取View宽高

作者: IT枫 | 来源:发表于2015-12-02 17:55 被阅读177次

在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

}

});

相关文章

网友评论

    本文标题:Android获取View宽高

    本文链接:https://www.haomeiwen.com/subject/texshttx.html