Android知识Android开发Android技术知识

Android获取View宽高

2015-12-02  本文已影响177人  IT枫

在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

}

});

上一篇 下一篇

猜你喜欢

热点阅读