在Oncreat()方法中获取View的宽度和高度
来源:互联网 发布:福建省广电网络集团 编辑:程序博客网 时间:2024/06/07 19:43
正常情况下,在OnCreate()方法中直接获取View的宽度和高度取得值是0。
原因:当OnCreate()方法被调用时,会通过LayoutInflater将XML布局文件填充到
contentView。填充过程只包括创建视图,却不包括设置大小。那么,视图的大小
是如何指定的呢?
绘制布局由两个遍历过程组成:测量过程和布局过程。测量过程由measure()方法
完成,该方法从上而下遍历视图树,在递归遍历的过程中,每个视图都会向下层传递尺寸和规格
当方法结束时,每个视图都会保存各自的尺寸和规格。
布局过程由layout()方法完成,该方法也是有上而下遍历视图树,在遍历过程中,每个父视图通过
测量过程的结果定位所有子视图的位置信息。
结论:只有在整个布局绘制完毕后,视图才能得到自身的高和宽,这个过程发生在OnCreate()方法之后,因此
在此之前调用getHeight()和getWidth()方法返回的结果都是0.
解决方法就是可以使用,view的post()方法解决上述问题,该方法受到一个Runnable线程参数,并将其添加到消息
队列中。有趣的是Runnable线程会在UI线程中执行。代码如下:
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View view = findViewById(R.id.main_my_view);
view.post(new Runnable(){
@override
public void run() {
Log.d(TAG, "view has width :" + view.getWidth() + " and height: " + view.getHeight());
}
});
}
0 0
- 在Oncreat()方法中获取View的宽度和高度
- 获取view的高度和宽度(在onCreate方法中)
- 在onCreate()方法中获取View的宽度与高度
- 在oncreate中如何获取view的高度和宽度
- 如何在onCreate中获取View的高度和宽度
- Activity中获取view的高度和宽度方法
- 在onCreate方法中获取某个View的宽度和高度
- 在onCreate方法中获取某个View的宽度和高度
- 在onCreate方法中获取某个View的宽度和高度
- Mark---获取view的高度和宽度(在onCreate方法中)
- 在onCreate方法中获取某个View的宽度和高度
- 在onCreate方法中获取某个View的宽度和高度
- 为什么在oncreat方法中使用post()可以获取的view的布局参数
- android中获取view在布局中的高度和宽度
- android在onCreate()方法中获取View的宽度与高度的方法实战
- android在onCreate()方法中获取View的宽度与高度的方法实战
- 最简便的在Activity中获取View的宽度或高度方法
- 自定义view中获取字符串的宽度和高度
- Bug调试那些事
- PHP imagick API中文简介
- Log4j自定义Appender
- C++指针基础问题
- permission is only granted to system apps
- 在Oncreat()方法中获取View的宽度和高度
- 基于遗传算法求解TSP问题(JAVA)
- linux svn 切换用户
- java实验五第二题
- JAVA项目打成可执行jar包
- 不重载动态设置Unity Web的大小
- 罗盘结构
- 黑马程序员——7、OC语言(成员变量、构造方法)
- copy_to_user 错误