1樓:可愛的小菜瓜
onlayout方法是viewgroup中子view的佈局方法,用於放置子view的位置。放置子view很簡單,只需在重寫onlayout方法,然後獲取子view的例項,呼叫 子view的layout方法實現佈局。在實際開發中,一般要配合onmeasure測量方法一起使用。
onlayout方法:
@override
protected abstract void onlayout(boolean changed,
int l, int t, int r, int b);
該方法在viewgroup中定義是抽象函式,繼承該類必須實現onlayout方法,而viewgroup的onmeasure並非必須重寫的。view的放置都是根據一個矩形空間放置的,onlayout傳下來的l,t,r,b分別是放置父控制元件的矩形可用空間(除去margin和padding 的空間)的左上角的left、top以及右下角right、bottom值。
layout方法:
public void layout(int l, int t, int r, int b);
該方法是view的放置方法,在view類實現。呼叫該方法需要傳入放置view的矩形空間左上角left、top值和右下角right、bottom值。這四個值是相對於父控制元件而言的。
例如傳入的是(10, 10, 100, 100),則該view在距離父控制元件的左上角位置(10, 10)處顯示,顯示的大小是寬高是90(引數r,b是相對左上角的),這有點 像絕對佈局。
平常開發所用到relativelayout、linearlayout、framelayout...這些都是繼承viewgroup的佈局。這些佈局的實現都是通過都實現viewgroup的onlayout方法,只是實現方法不一樣而已。
下面是一個自定義viewgroup的demo,用onlayout和layout實現子view的水平放置,間隔是20px
public class myviewgroup extends viewgroup
@override
protected void onlayout(boolean changed, int l, int t, int r, int b) }}
2樓:匿名使用者
the first permanent settler there
android 自定義view的時候 為什麼onlayout函式會被呼叫兩次
3樓:匿名使用者
如果你看過listadapter的getview函式,你就知道,剛顯示list的時候**用好幾次。大概是系統顯示前有不同的例項獲取view或者呼叫過這個函式
android問題:自定義控制元件的時候,onlayout()方法用來做什麼的?
4樓:匿名使用者
layout是android view佈局過程的第二個階段,第一階段是measure,即測量,首先測定view的大小。layout的作用是給所有的child安排大小和擺放位置。
有兩個主要的相關方法:
public void layout(int l, int t, int r, int b);子類不應該過載這個方法,而應該選擇過載 protected void onlayout(boolean changed, int left, int top, int right, int bottom),這個onlayout由layout方法呼叫,
如果子類是一個viewgroup(例如linearlayout或者relativelayout),則應該過載onlayout方法,對每個child呼叫其layout方法,來安排child的大小和位置。
簡而言之,如果你自定義的是view而不是viewgroup,那麼不用過載這個,
否則,你應該過載它,並且為所有的child安排,兩件事,1,佔多大地方,2放在哪兒。
android ontrackballevent什麼時候呼叫
5樓:小智帶你暢享娛樂
onfinishinflate() 當view中所有的子控制元件均被對映成xml後觸發
onmeasure(int, int) 確定所有子元素的大小
onlayout(boolean, int, int, int, int) 當view分配所有的子元素的大小和位置時觸發
onsizechanged(int, int, int, int) 當view的大小發生變化時觸發
ondraw(canvas) view渲染內容的細節
onkeydown(int, keyevent) 有按鍵按下後觸發
onkeyup(int, keyevent) 有按鍵按下後彈起時觸發
ontrackballevent(motionevent) 軌跡球事件
ontouchevent(motionevent) 觸屏事件
onfocuschanged(boolean, int, rect) 當view獲取或失去焦點時觸發
onwindowfocuschanged(boolean) 當視窗包含的view獲取或失去焦點時觸發
onattachedtowindow() 當view被附著到一個視窗時觸發
ondetachedfromwindow() 當view離開附著的視窗時觸發,android123提示該方法和 onattachedtowindow() 是相反的。
onwindowvisibilitychanged(int) 當視窗中包含的可見的view發生變化時觸發
onlayout(boolean changed, int l, int t, int r, int b)各個引數的作用
6樓:匿名使用者
onlayout決定了子檢視放置在螢幕上的位置和子檢視的大小。
這篇還行。
7樓:匿名使用者
一、引數說明:
1)引數changed表示view有新的尺寸或位置;
2)引數l表示相對於父view的left位置;
3)引數t表示相對於父view的top位置;
4)引數r表示相對於父view的right位置;
5)引數b表示相對於父view的bottom位置。.
二、呼叫場景:
在view給其孩子設定尺寸和位置時被呼叫。子view,包括孩子在內,必須重寫onlayout(boolean, int, int, int, int)方法,並且呼叫各自的layout(int, int, int, int)方法。
android 自定義控制元件開發中 onlayout如何設定裡面控制元件的大小(android 大神請進……)
薩達姆什麼時候被抓的,薩達姆是什麼時候被逮捕的
是2003年12月13日20時30分左右,薩達姆在家鄉提克里特被美軍抓獲。美軍第四步兵團大約600名官兵在該師指揮官奧迪諾少將率領下前往達爾瓦鎮,幷包圍了薩達姆藏身地點。當晚8時,全副武裝的美軍士兵代號 紅色黎明 的突襲行動。不斷的搜捕,美軍和庫爾德人特種部隊決定擴大搜尋範圍。最後美軍第四師步兵團,...
琵琶為何要調絃,什麼時候調啊
輕舞飛揚 只要是樂器尤其是絃樂都要調音的,因為受熱脹冷縮的影響。調絃是將每根弦的音高調整到標準音高,或者是按照一定的音程關係調整正確 每根弦都有它的固定音調 絃樂出廠之前琴絃是不會準的 所以彈之前都要調絃 調絃是把音彈準的最根本的前提 魷魚菇 因為聲音就不對了,琵琶的標準調是d調,四根弦應分別是a,...
女人在什麼時候最容易被感動,女人什麼時候最容易被打動?
我不知道其他女孩怎麼想 只能和你說我覺得感動的事 1.去商場或是吃飯的時候 他幫我拉門 2.陪他去玩 我坐在旁邊看著覺得無聊的時候 他過來拍拍我的頭 3.過馬路時 他擋在有車的那一邊陪我過馬路 4.夜裡出去玩 我突然胃痛 因為他家那邊比較偏僻 沒車 他跑了5公里左右的路來回 給我買胃藥 5.手指破了...