Android 获得view的宽和高
在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().
转载于:https://www.cnblogs.com/helinzi/p/5019588.html
Android 获得view的宽和高相关推荐
- Android 正确获取View的宽和高
Android 在实际开发过程中,我们可能经常要获取View的宽和高,那么如何来正确获取一个View的宽和高呢. View提供了getWidth(),getHeight(),getMeasureWid ...
- 自定义View 中很关键的问题View获取宽/高是0 的解决办法
原因 Activity的生命周期方法 与 View在measure过程 不是同步执行的,也就是说Activity在执行onCreate ,onStart , onResume 过程中 ,View的测量 ...
- android获取控件宽和高
Android获取控件宽高 在项目中用到了测量控件的宽和高,这个在Activity的onCreate去使用控件的getHeight()和getWidth()方法去获取是会失败的,返回的都是0.这是由于 ...
- Android自定义View——可以设置最大宽高的FrameLayout
为什么80%的码农都做不了架构师?>>> 可以设置最大宽高的FrameLayout 支持相对父控件的半分比设置 默认优先比例设置 不支持参数小于零 MaxLayout.java ...
- android 获取屏幕的宽和高
屏幕高度:context.getResources().getDisplayMetrics().heightPixels 屏幕宽度:context.getResources().getDisplayM ...
- android 自定义特效,Android自定义View之高仿QQ健康
我们都知道自定义View一般有三种直接继承View.继承原有的控件对控件的进行修改.重新拼装组合,最后一种主要针对于ViewGroup.具体的怎么做不是本文的所涉及的内容(本文是基于第一种方式实现的) ...
- 面试官问我:View.post为什么能够获取View的宽高
记得看文章三部曲,点赞,评论,转发. 微信搜索[程序员小安]关注还在移动开发领域苟活的大龄程序员,"面试系列"文章将在公众号同步发布. 1.前言 最近看到几个技术群里都在吐槽目前面 ...
- Android之View绘制流程源码分析
版权声明:本文出自汪磊的博客,转载请务必注明出处. 对于稍有自定义View经验的安卓开发者来说,onMeasure,onLayout,onDraw这三个方法都不会陌生,起码多少都有所接触吧. 在安卓中 ...
- Android自定义View之仿QQ侧滑菜单实现
最近,由于正在做的一个应用中要用到侧滑菜单,所以通过查资料看视频,学习了一下自定义View,实现一个类似于QQ的侧滑菜单,顺便还将其封装为自定义组件,可以实现类似QQ的侧滑菜单和抽屉式侧滑菜单两种菜单 ...
最新文章
- 责任链设计模式(过滤器、拦截器)
- ASP.NET Core 2.0使用Log4net实现记录日志功能
- XML Tree Editor(树形视图XML编辑器) v0.1.0.35
- 笨办法学 Python · 续 练习 18:性能测量
- python中oxf2是多少_Python学习笔记[2]
- 数组元素循环右移问题
- weblogic启动报:java.lang.ClassCastException: com.octetstring.vde.backend.BackendRoot
- 商场云WiFi靠谱吗
- 悟空遥控器 --- 手机投屏到电视 播放视频
- 人机大战三周年:围棋界发生了哪些巨变?
- 什么是Python中的Pip?
- PDF如何修改,PDF怎么删除其中一页
- Swift学习第七枪--协议(一)
- python shutil.move 移动文件
- 什么是SEO?SEO是什么职业?
- html语义化标签是什么,HTML语义化标签探析
- C语言总结这一篇就够了(不收藏必后悔系列)
- Linux设备驱动-platform虚拟总线dya02
- 【论文翻译】梯度域高动态范围压缩
- 什么是WebSocket?WebSocket在Vue中如何使用?