android中MeasureSpec有什么用

发布时间:2021-09-27 17:50 来源:亿速云 阅读:0 作者:小新 栏目: 开发技术

这篇文章给大家分享的是有关android中MeasureSpec有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

  在安卓View的measure过程中,measureSpec扮演着重要的作用。MeasureSpec是一个32位的int,前2位代表模式,其中00代表UNSPECIFIED,01代表EXACTLY,10代表ATMOST,后30位代表具体大小,例如1073741824模式为EXACTLY,大小为1080。

  measurespec是什么意思

  在ViewGroup中有一个getChildMeasureSpec方法用于根据父ViewGroup的MeasureSpec模式和子view的wrap_content、match_parent或xxdp确定子view的MeasureSpec模式,具体规则如下图,第二行是父view调用子view的measure函数测量的时候传递的参数,childSize是子view的大小(没错,是父view包办的婚姻,子view只是执行),parentSize是父view的剩余大小(表示子view的大小自己测,但是不要超出这个大小),0表示父view对子view没有任何约束,想多大就多大。

  measurespec的方法

  初次接触看到这两张图一定是云里雾里不知所云,这几种模式到底和xml布局文件中的wrap_content、match_parent有啥关系?我尽量清楚地解释一下转换的过程。在xml布局文件中有三种写法wrap_content、match_parent,xxdp,程序并不直接处理这些而是会对他们做转换,程序加载的时候会把这些参数读取到LayoutParams对象中保存起来,然后开始从根view遍历整棵view树,这里的根view并不是我们在xml文件中写的view,而是系统内置的DecorView,从DecorView到xml的view中间还有好多层,不过和主题关系不大就不展开说了,只需要知道xml布局中的上一层view的模式是EXACTLY就够了(毕竟屏幕大小是确定的),按上面的表格,如果我们的布局是match_parent则模式为EXACTLY,如果我们的布局是wrap_content则模式为AT_MOST。知道这个前提再根据上面的表格我们便可以很“轻松”地推断出所有的view是什么模式的,大小应该是多少。

免责声明:本站发布的内容(图片、视频和文字)以原创、来自互联网转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系QQ:712375056 进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。