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.