zoukankan      html  css  js  c++  java
  • ViewGroup的onMeasure和onLayout分析

    参考网址:

    1、http://blog.csdn.net/linghu_java/article/details/23882681

    2、http://blog.csdn.net/androiddevelop/article/details/8104763

          onLayout传下来的l,t,r,b分别是放置父控件的矩形可用空间(除去margin和padding的空间)的左上角的left、top以及右下角right、bottom值。

    该方法是View的放置方法,在View类实现。调用该方法需要传入放置View的矩形空间左上角left、top值和右下角right、bottom值。

    这四个值是相对于父控件而言的。例如传入的是(10, 10, 100, 100),则该View在距离父控件的左上角位置(10, 10)处显示,

    显示的大小是宽高是90(参数r,b是相对左上角的),这有点像绝对布局。

            

    public class MyViewGroup extends ViewGroup {
     
        // 子View的水平间隔
        private final static int padding = 20;
         
        public MyViewGroup(Context context, AttributeSet attrs) {
            super(context, attrs);
            // TODO Auto-generated constructor stub
        }
     
        @Override
        protected void onLayout(boolean changed, int l, int t, int r, int b) {
            // TODO Auto-generated method stub
             
            // 动态获取子View实例
            for (int i = 0, size = getChildCount(); i < size; i++) {
                View view = getChildAt(i);
                // 放置子View,宽高都是100
                view.layout(l, t, l + 100, t + 100);
                l += 100 + padding;
            }
             
        }
         
    }

     通过上面的例子可以发现,通过getChildCount()函数获取到,孩子的个数,

    然后通过获取到的孩子View view = getChildAt(i);,来调用layout()方法,view.layout(l, t, l + 100, t + 100);

    完成视图的布局。

  • 相关阅读:
    整数的可除性
    椭圆曲线的基本概念
    数组方法分析-笔记
    JS-作用域
    JS-变量存储
    Web框架-inoic
    圣杯布局
    js,php中的面向对象
    正则
    math对象
  • 原文地址:https://www.cnblogs.com/zhangbaowei/p/4732319.html
Copyright © 2011-2022 走看看