本篇文章主要介绍了"Android开发之自定义控件二---onLayout详解",主要涉及到方面的内容,对于Android开发感兴趣的同学可以参考一下:
话说一个乞丐在看一个程序员写程序,程序员遇到一个问题怎么都解决不了,这时乞丐说这少个分号,程序员照做结果问题解决了,就问:你怎么知道?乞丐笑笑说:我之前就是干这...
- protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
- }
啊?啥都没有,你这是弄啥嘞?其实仔细想想你就会理解,因为onLayout的目的是确定子View在父View中的位置,那么这个步骤肯定是由父View来决定的,因此在View中onLayout是一个空的实现,既然如此我们就去看看ViewGroup的onLayout的源码呗。
ViewGroup——onLayout
[java] view
plain copy
- @Override
- protected abstract void onLayout(boolean changed,
- int l, int t, int r, int b);
我们看到它是一个抽象的方法,我们都知道当继承一个类时必须实现其中的抽象方法,这也就是说在自定义ViewGroup时我们必须实现onLayout方法。在上一篇我们就说过onLayout的作用就是确定子View的位置,那么它是怎样确定子View的位置的呢?其实它是通过四个参数 l,t,r,b即代表距离父View的左上右下的距离,看张图你就会明白它的含义

mLeft,mTop,mRight,mBottom的讲解
mLeft——View.getLeft():子View的左边界到父View的左边界的距离
[java] view
plain copy
- // 获取子View的左边界到父View的左边界的距离
- ublic final int getLeft() {
- return mLeft;
mTop——View.getTop():子View的顶部到父View顶部的距离
mRight——View.getRight():子View的右边界到父View的左边界的距离