Sobes.tech
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.