子父布局wrap_content和match_parent相对onMeasure的作用浅析
来源:互联网 发布:淘宝roi 编辑:程序博客网 时间:2024/04/30 15:16
安卓自定义控件中,对于尺寸测量都在onMeasure方法中进行的,而尺寸测量中用到xml属性最重要的两个,layout_width,layout_height,下面来分析下,这两个属性(父控件和子控件)对测量的影响。
看布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="第一个控件" android:background="#123456"/></LinearLayout>
首先,父控件layout_width属性为match_parent,这个很好理解,在父控件onMeasure方法中,传入的第一个参数通过
MeasureSpec.getMode(widthMeasureSpec) 得到的模式值为 MeasureSpec.EXACTLY
可见该控件的父控件给了一个确定的值,这样外层控件的宽度值确定了,现在来看子控件TextView的layout_width属性,也是
match_parent,在TextView的onMeasure方法中的第一个参数仍然可以得到该控件准确的宽度值了,由此可见整个宽度值是填满屏幕的。
以上都好理解,下面看看layout_height属性。
外层控件(父控件),layout_height:wrap_content,在对应的onMeasure方法中,得到的模式值为MeasureSpec.AT_MOST,所以
此时无法确定高度大小,得继续测量子控件高度。现在来看TextView的layout_height的值为match_parent,而此时父控件的高度值交给
子控件来完成,所以最终确定高度值得子控件告诉外层父控件。而此时子控件TextView的onMeasure方法被调用多次,第一次调用时,高度模式为
MeasureSpec.AT_MOST,当通过子控件的测量方法获取到外层控件的高度值后,会再次调用TextView的onMeasure方法,而这次调用时,
传入的高度模式值为MeasureSpec.EXACTLY,从而确定子控件高度。
0 0
- 子父布局wrap_content和match_parent相对onMeasure的作用浅析
- Android 布局 fill_parent、wrap_content和match_parent的区别和作用
- Android 布局 fill_parent、wrap_content和match_parent的区别和作用
- android布局--Android fill_parent、wrap_content和match_parent的区别
- android布局--Android fill_parent、wrap_content和match_parent的区别
- android布局中的fill_parent、wrap_content和match_parent的区别
- 【布局参数】Android fill_parent、wrap_content和match_parent的区别
- android布局--Android fill_parent、wrap_content和match_parent的区别
- android布局--Android fill_parent、wrap_content和match_parent的区别
- android布局 fill_parent、wrap_content和match_parent的区别
- android布局--Android fill_parent、wrap_content和match_parent的区别
- Android布局--Android fill_parent、wrap_content和match_parent的区别
- android布局 Android fill_parent wrap_content 和match_parent的区别
- Android布局fill_parent、wrap_content和match_parent的区别
- android布局--Android fill_parent、wrap_content和match_parent的区别
- android布局--Android fill_parent、wrap_content和match_parent的区别
- android布局--fill_parent、wrap_content和match_parent的区别
- android布局--Android fill_parent、wrap_content和match_parent的区别
- Andorid学习笔记(ADT)-eclipse-bundle包SDK目录结构
- NSCache在AFNetworking及SDWebImage中的使用流程
- Andorid学习笔记(ADT)-ADB安卓调试桥
- ind2vec和vec2ind函数的意思和使用
- 面向对象在JavaScript中的接口实现
- 子父布局wrap_content和match_parent相对onMeasure的作用浅析
- Andorid学习笔记(ADT)-LogCat日志调试工具
- JSF 中 jsp 页面跳转没反应
- Andorid学习笔记(ADT)-点击事件的四种写法
- Andorid学习笔记(ADT)-startActivity和startActivityForResult的用法
- WKWebView 基本使用
- Andorid学习笔记(ADT)-常见的UI布局
- zzulioj 1881: 蛤玮的机房(并查集)水
- funsioncharts运用json数据显示