我是靠谱客的博主 称心诺言,最近开发中收集的这篇文章主要介绍Android中的OnMeasure及OnLayout,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

1、View中包含onLayout()onMeasure()layout()measure()。查看源码可以在Viewlayout()中调用了onLayout(),而onLayout()本身是一个等待重写的空方法,同样的在measure()中调用了onMeasure()方法,和onLayout()不同的是onMeasure()并不是一个空方法,在其中调用了setMeasureDimension()方法。setMeasureDimension()是用来保存组件的widthMeasureSpecheightMeasueSpac信息的,这两个保存下来的信息就是getMeasuredWidth()getMeasuredHeight()中返回的值。

2、ViewGroupView是一样的,不同的是ViewGrouponLayout是一个必须被实现的抽象方法。同样的在layout()中调用onLayout(),在measure()中调用onMeasure()

3、要实现自定义的ViewGroup,可以在其必须实现的onLayout()中调用子Viewlayout()。而子viewlayout()又会去调用其onLayout()方法,那么这样就形成了所谓的“递归”布局过程了。

4、一个view的真正布局方法是setFrame(),这在layout()中有被调用到。即layout()中会先调用setFrame()设置组件的边界,再调用onLayout(),如果该view包含子view。则可以调用每个子viewlayout()方法。

5、要指子view的大小可以在子viewonMeasure()中调用setMesauredDimension()来实现。

6、综上所述,android中组件绘制分为两个过程,测量(Measure)和布局(Layout)。测量过程通过measure()onMeasure()方法实现,measure()方法中调用了onMeasure()方法,在onMeasure()中可以通过setMeasuredDimension()来设置组件的尺寸信息,这些尺寸信息在layout过程中会被使用到。布局过程是通过layout()onLayout()方法实现的,layout()中调用了onLayout(),在layout()中可以使用getMeasuredHeight()getMeasuredWidth()通过setFrame()来设置组件范围。所以在自定义的ViewGroup中往往只重写onLayout(),这是因为ViewGrouplayout()方法已经被系统调用了。

最后

以上就是称心诺言为你收集整理的Android中的OnMeasure及OnLayout的全部内容,希望文章能够帮你解决Android中的OnMeasure及OnLayout所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部