动态获得View的宽度和高度
来源:互联网 发布:java项目需求分析 编辑:程序博客网 时间:2024/05/19 17:06
在oncreate()中利用view.getWidth()或是view.getHeiht()来获取view的宽和高,看似没有问题,其实他们去得值是0,并不是你想要的结果?
这是为什么呢?
在调用oncreate()方法时,界面处于不可见状态,内存加载组件还没有绘制出来,你是无法获取他的尺寸。
那如何在绘制组件之前能获取到该组件的尺寸大小呢?
这里有三种方法,经过验证的:
方法一//测量方法
1
2
3
4
5
int
width =View.MeasureSpec.makeMeasureSpec(
0
,View.MeasureSpec.UNSPECIFIED);
int
height =View.MeasureSpec.makeMeasureSpec(
0
,View.MeasureSpec.UNSPECIFIED);
view.measure(width,height);
int
height=view.getMeasuredHeight();
int
width=view.getMeasuredWidth();
方法二
1
2
3
4
5
6
7
8
9
//增加组件绘制之前的监听
ViewTreeObserver vto =view.getViewTreeObserver();
vto.addOnPreDrawListener(
new
ViewTreeObserver.OnPreDrawListener() {
@Override
public
booleanonPreDraw() {
int
height =view.getMeasuredHeight();
int
width =view.getMeasuredWidth();
}
});
1
2
3
4
5
6
7
8
9
10
//增加整体布局监听
ViewTreeObserver vto = view.getViewTreeObserver();
vto.addOnGlobalLayoutListener(
new
OnGlobalLayoutListener(){
@Override
public
voidonGlobalLayout() {
view.getViewTreeObserver().removeGlobalOnLayoutListener(
this
);
int
height =view.getMeasuredHeight();
int
width =view.getMeasuredWidth();
}
});
那么,在activity进入运行期时,组件的尺寸获取方法就很简单了,直接getWidth()和getHeight().
原文链接
http://blog.csdn.net/yangdeli888/article/details/25405263
0 0
- 动态获得View的宽度和高度
- 在代码中获得view的宽度和高度
- Android动态设置view的高度宽度
- 获得手机的宽度和高度像素
- JS获得浏览器的宽度和高度
- js获得页面的高度和宽度
- 获得手机的屏幕高度和宽度
- 获得网页的高度和宽度
- 获得屏幕宽度和高度的方法
- 如何获取view的宽度和高度
- 获取View的高度和宽度
- Android 获取View的高度和宽度
- android 中 view 的宽度和高度
- Android获取View的宽度和高度
- Android获取View的宽度和高度
- 获得字符宽度和高度
- 获得屏幕高度和宽度
- 【微信小程序教程】动态改变view标签的宽度和高度
- iOS开发系列--让你的应用“动”起来
- android优化之布局优化-Merge标签的使用
- 第六周项目三 人数不定的工资类
- ios缓存系列问题
- Codeforces Round #299 (Div. 2)
- 动态获得View的宽度和高度
- PHP flock文件锁详解介绍
- Lua笔记:多个菜单项设置同一个回调方法
- Java初学习 - 字符串与ASCII相互转换
- android中view surfaceView GLSurfaceView的区别
- Fragment嵌套fragment出现的两种错误No view found for id for fragment 与Can not perform this action after onSave
- android小知识之注释模板
- 使用Intent启动Activity
- 解决storyboard下使用autolayout自定义Cell时,右侧不对齐的问题