Junior — Middle
Czy możesz wyjaśnić, jak działa metoda onLayout w klasie View i jaką rolę odgrywa w procesie wyświetlania interfejsu?
sobes.tech AI
Odpowiedź od AI
Metoda onLayout w klasie View odpowiada za rozmieszczenie elementów potomnych wewnątrz samego View. Jest wywoływana przez system po zakończeniu pomiarów rozmiaru (onMeasure) i przed renderowaniem. W tej metodzie ustalane są dokładne współrzędne (lewo, góra, prawo, dół) dla każdego elementu potomnego View, określając, gdzie i jak będą wyświetlane.
Rola onLayout polega na zdefiniowaniu pozycji i rozmiaru elementów potomnych, aby interfejs wyglądał poprawnie. W niestandardowych ViewGroup często nadpisuje się tę metodę, aby zaimplementować własną logikę rozmieszczenia elementów.
Przykład nadpisania onLayout w niestandardowym 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;
}
}
Tutaj elementy potomne są umieszczane pionowo jeden pod drugim.