從小就語(yǔ)文不好铲球,第一次寫(xiě)文章心里還是有點(diǎn)忐忑的~芋类。這里主要是對(duì)看書(shū)學(xué)到的知識(shí)作總結(jié)长踊,(發(fā)現(xiàn)以前的東西都忘了)廢話不多說(shuō)试吁,直接進(jìn)入主題吧磷支。
主要解決倆個(gè)問(wèn)題:
1.view支持wrap_content
2.padding要自己處理
拿畫(huà)一個(gè)圓來(lái)說(shuō)谒撼,先看下一普通平時(shí)的寫(xiě)法
這樣寫(xiě)就簡(jiǎn)單實(shí)現(xiàn)了一個(gè)紅色的實(shí)心圓,但是如果你在布局中修改padding值是無(wú)法生效的雾狈,還有寬高設(shè)為wrap_content時(shí)也是無(wú)效的廓潜。
為解決上面?zhèn)z種問(wèn)題,我們需要做如下處理:
1.padding值無(wú)法生效善榛,解決這個(gè)問(wèn)題其實(shí)很簡(jiǎn)單辩蛋,就是在onDraw的時(shí)候,把padding值算進(jìn)去移盆,下面是代碼
2.在wrap_content時(shí)無(wú)效悼院,解決辦法,在測(cè)量的時(shí)候得到寬高設(shè)置的模式和大小咒循,做出判斷
MeasureSpec.AT_MOST 是指父組件能夠給出的最大的空間据途,也就是指wrap_content時(shí),這里我給的默認(rèn)值是200叙甸。
自定義屬性太簡(jiǎn)單颖医,這里就不說(shuō)了。
代碼不多裆蒸,挺簡(jiǎn)單的熔萧,直接貼出完整代碼吧