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