說(shuō)到自定義控件欧啤,就不得不提到3個(gè)方法,onMeasure(),onLayout(),onDraw(),這里重點(diǎn)說(shuō)下onLayout方法湿痢。
?layout(int l, int t, int r, int b)有4個(gè)參數(shù)癞己,其中源代碼注釋是這樣的:
?Left position, relative to parent
?Top position, relative to parent
?Right position, relative to parent
?Bottom position, relative to parent
翻譯也簡(jiǎn)單,就是相對(duì)于父控件上下左右的距離茵典,一般確定一個(gè)控件的位置,其實(shí)只需要left和top這2個(gè)參數(shù)就可以了宾舅,然后我就想為什么還需要后面2個(gè)參數(shù)呢统阿,然后就專門寫了個(gè)demo驗(yàn)證了一下(英文差,注釋不能完全看懂)筹我,得出結(jié)論如下:
? left和top確實(shí)是確定控件位置的重要參數(shù)扶平,但是right和bottom也不可少,因?yàn)槠聊痪湍敲袋c(diǎn)大蔬蕊,如果你設(shè)置的left和top值超過(guò)了屏幕寬高结澄,那控件? ? ? 不是就消失了么,所以用right和bottom做規(guī)避袁串,不允許控件位置超出屏幕概而。但是呢還是會(huì)有一個(gè)問(wèn)題呼巷,如果你在使用layout方法的時(shí)候囱修,只改變了left和top的值,沒(méi)有改變r(jià)ight和bottom的值王悍,控件就會(huì)被擠壓破镰,部分變的不可見(jiàn),所以想要使用layout改變控件位置的同學(xué)注意了压储,