2012.06.28(2)——— android onMeasure和onLayout
参考:http://blog.csdn.net/qinjuning/article/details/7110211

1. onMeasure 我的大小a. 属于View的方法,用来测量自己和内容的来确定宽度和高度 b. view的measure方法体中会调用onMeasure c. MeasureSpec有3种模式分别是UNSPECIFIED, EXACTLY和AT_MOST, 那么这些模式和我们平时设置的layout参数fill_parent, wrap_content有什么关系呢。经过代码测试就知道,当我们设置width或height为fill_parent时,容器在布局时调用子view的measure方法传入的模式是EXACTLY,因为子view会占据剩余容器的空间,所以它大小是确定的。而当设置为wrap_content时,容器传进去的是AT_MOST, 表示子view的大小最多是多少,这样子view会根据这个上限来设置自己的尺寸。当子view的大小设置为精确值时,容器传入的是EXACTLYd. 在这个方法在必须调用setMeasureDimension 方法来告诉本View的Container类(各种Layout类型)所需占据的大小,如果没有设置setMeasureDimension ,Layout将会抛出异常。e. 调用流程 e.1 设置本View视图的最终大小,该功能的实现通过调用setMeasuredDimension()方法去设置实际的高(对应属性: mMeasuredHeight)和宽(对应属性:mMeasureWidth) e.2 如果本视图是个ViewGroup类型,则循环遍历子view的measure()方法2、onLayout  我的位置a. 属于ViewGroup的方法,用来为当前ViewGroup的子元素的位置和大小 b. View的layout方法体中会调用onLayout c. 调用流程c.1 设置该View视图位于父视图的坐标轴,即mLeft,mTop,mLeft,mBottom(调用setFrame()函数去实现)c.2 如果该View是ViewGroup对象,需要实现onLayout方法,对每个子视图进行布局,调用该子视图的layout()方法去设置它的坐标值。





更多相关文章

  1. Android ListView的item点击无响应的解决方法
  2. Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implem
  3. android中使用jni,ndk的C语言回调方法
  4. 通过Android Studio3.5.3编译安装App失败,提示安装包异常解决方
  5. Android ImageView图片自适应大小
  6. Android 修改app图标和名称的方法
  7. 【Android】adapter has changed解决方法

随机推荐

  1. Android(安卓)图片旋转(使用Matrix.setRot
  2. Android(安卓)Wi-Fi Disable Roaming in
  3. Android屏幕休眠禁止或清除
  4. Android根据电量变化为不同图片的方法【
  5. android文件存取
  6. android EditText 监听复制粘贴等操作
  7. Android之Style
  8. Android——通过电话号码获得联系人图像
  9. How to construct a Android(安卓)projec
  10. Android(安卓)R