Junior — Middle
Môžete vysvetliť, ako funguje metóda onLayout v triede View a akú úlohu zohráva v procese zobrazovania rozhrania?
sobes.tech AI
Odpoveď od AI
Metóda onLayout v triede View je zodpovedná za umiestnenie detí vo vnútri samotného View. Je volaná systémom po dokončení meraní rozmerov (onMeasure) a pred vykreslením. V tejto metóde sa stanovujú presné súradnice (vľavo, hore, vpravo, dole) pre každý podriadený View, čím sa určuje, kde a ako budú zobrazené.
Úlohou onLayout je určiť pozíciu a veľkosť detí tak, aby rozhranie vyzeralo správne. V vlastných ViewGroup sa často prepíše táto metóda, aby sa implementovala vlastná logika rozmiestnenia prvkov.
Príklad prepísania onLayout v vlastnom ViewGroup:
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
int childCount = getChildCount();
int currentTop = top;
for (int i = 0; i < childCount; i++) {
View child = getChildAt(i);
int childHeight = child.getMeasuredHeight();
child.layout(left, currentTop, right, currentTop + childHeight);
currentTop += childHeight;
}
}
Tu sú deti umiestnené vertikálne jeden pod druhým.