说到自定义控件,就不得不提到3个方法,onMeasure(),onLayout(),onDraw(),这里重点说下onLayout方法。
layout(int l, int t, int r, int b)有4个参数,其中源代码注释是这样的:
Left position, relative to parent
Top position, relative to parent
Right position, relative to parent
Bottom position, relative to parent
翻译也简单,就是相对于父控件上下左右的距离,一般确定一个控件的位置,其实只需要left和top这2个参数就可以了,然后我就想为什么还需要后面2个参数呢,然后就专门写了个demo验证了一下(英文差,注释不能完全看懂),得出结论如下:
left和top确实是确定控件位置的重要参数,但是right和bottom也不可少,因为屏幕就那么点大,如果你设置的left和top值超过了屏幕宽高,那控件 不是就消失了么,所以用right和bottom做规避,不允许控件位置超出屏幕。但是呢还是会有一个问题,如果你在使用layout方法的时候,只改变了left和top的值,没有改变right和bottom的值,控件就会被挤压,部分变的不可见,所以想要使用layout改变控件位置的同学注意了,
网友评论