文档章节

android 获取控件的大小

铂金小狼
 铂金小狼
发布于 2013/09/27 15:22
字数 335
阅读 326
收藏 0
三种方法:
第一种
int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
    int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
    imageView.measure(w, h);
    int height =imageView.getMeasuredHeight();
    int width =imageView.getMeasuredWidth();

第二种

   ViewTreeObserver vto = imageView.getViewTreeObserver();
    vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
        public boolean onPreDraw() {
            int height = imageView.getMeasuredHeight();
            int width = imageView.getMeasuredWidth();
            return true;
        }
    });
第三种
ViewTreeObserver vto2 = imageView.getViewTreeObserver();  
    vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override  
        public void onGlobalLayout() {
            imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);  
        }  
    });

先普及一个知识,也是今天才学到的(太弱了,要恶补啊)

ViewTreeObserver

说白了就是一个view的监听器,监听view绘制前的状态,滚动状态,touch等等,具体的网上还是挺多的,再次不多说,一般用来获取控件大小,还有就是app程序开启有点啥动画的等等,具体网上搜搜吧

这三种方法,第一种相当于重写了onMeasure方法,你偶尔来一发,OK,但是控件如果多了,而且次数多了,内存不说,耗时啊~第二种我试试了,好使,但是我打印log的时候,我屮艸芔茻,这个回调一直在回调啊,不知道回调了多少次,算了果断关之,由于回调函数的方法onPreDraw()开始默认return false,没有改成ture,结果开始一直就看不到页面,悲哀的我,第三种,我只说三句话:好使,只调一次,推荐


感谢http://my.eoe.cn/833798/archive/777.html对本博客的大力支持

© 著作权归作者所有

铂金小狼
粉丝 54
博文 238
码字总数 23466
作品 0
程序员
私信 提问
android 布局的问题

最近在对比布局的用法,发现一些问题,有些困惑 我运行后发现,撑满了整个手机屏,这说明了子控件textview的大小貌似有自己决定的呀,我一直以为子控件的大小不应该超过父控件设定的大小。 ...

天王盖地虎626
2016/03/12
42
0
android (4)控件的xml属性

android:id 为控件指定相应的ID。android:text 指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符串。android:textSize 指定控件当中字体的大小。android:backg...

souldepth
2014/07/29
0
0
android XML布局和子View按比例布局

首先按照程序的目录结构大致分析:   res/layout/ 这个目录存放的就是布局用的xml文件,一般默认为main.xml   res/values/ 这个目录存放的是一堆常量的xml文件   res/drawable/ 存放的...

程序袁_绪龙
2014/09/09
0
0
Android:UI设计 常用控件

TextView android:layoutwidth 和 android:layoutheight 指定控件的宽度和高度,可选值有三个:matchparent、fillparent、wrapcontent。matchparent 和 fillparent 相似,以父布局大小决定控...

Android开发小被
05/14
0
0
View 体系详解:View 的工作流程

1、View 树的加载流程 文末有免费福利哦 当我们调用 方法的时候,会调用到 中的 获取一个 Activity 实例, 并在 的 方法中调用 Activity 的 完成 DecorView 的创建。这样我们就获取了一个 Ac...

北辰丨丶
03/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue-Ueditor

记录,忘了还要写啥了,先发吧,后面再补。。。 代码示例 import UEditor from '@/components/UE.vue';components: { UEditor },return {config: { //可以在此处定义工...

华山猛男
24分钟前
2
0
jupyter部署安装

python373 -m ipykernel install --name python373 ipython kernelspec list sc create myjupyterservice binpath="D:\apply\Python373\Scripts\jupyter-notebook --config=V:/my_work/jupyt......

mbzhong
38分钟前
4
0
聊聊feign的Contract

序 本文主要研究一下feign的Contract Contract feign-core-10.2.3-sources.jar!/feign/Contract.java public interface Contract { /** * Called to parse the methods in the class t......

go4it
今天
3
0
Linux 软链接和硬链接简介

本文主要介绍了Linux系统中的链接文件。 文件系统 在Linux系统中,将文件分为两个部分:用户数据和元数据。 元数据(inode) 元数据即文件的索引节点(inode),用来记录文件的权限(r、w、x...

问题终结者
今天
5
0
RocketMQ的事务投递

RocketMQ的事务投递 这是阿里的分布式事务图: 1、A服务先发送个Half Message给Brock端,消息中携带 B服务 即将要+100元的信息。 2、当A服务知道Half Message发送成功后,那么开始第3步执行本...

春哥大魔王的博客
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部