Sobes.tech
Junior — Middle

Můžete vysvětlit, jak funguje metoda onLayout ve třídě View a jakou roli hraje v procesu zobrazování rozhraní?

sobes.tech AI

Odpověď od AI

Metoda onLayout ve třídě View je odpovědná za umístění potomků uvnitř samotného View. Je volána systémem po dokončení měření rozměrů (onMeasure) a před vykreslením. V této metodě jsou stanoveny přesné souřadnice (vlevo, nahoře, vpravo, dole) pro každý podřízený View, čímž se určuje, kde a jak budou zobrazeny.

Úkolem onLayout je určit pozici a velikost podřízených prvků tak, aby rozhraní vypadalo správně. V vlastních ViewGroup se často přepisuje, aby se implementovala vlastní logika rozložení prvků.

Příklad přepsání onLayout v vlastním 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;
    }
}

Zde jsou potomci umístěni vertikálně jeden pod druhým.