Sobes.tech
Junior — Middle

Kas saaksite selgitada, kuidas töötab onLayout meetod View klassis ja millist rolli see mängib kasutajaliidese kuvamise protsessis?

sobes.tech AI

Vastus AI-lt

View klassi onLayout meetod vastutab lasteelementide paigutamise eest iseendas View-s. Seda kutsutakse süsteemi poolt pärast onMeasure mõõtmiste lõpetamist ja enne joonistamist. Selles meetodis määratakse iga lapse View täpsed koordinaadid (vasak, üla, parem, ala), määrates, kus ja kuidas need kuvatakse.

onLayout roll on määrata laste elementide asukoht ja suurus, et kasutajaliides näeks korrektne välja. Kohandatud ViewGroup-ides ülekirjutatakse sageli see meetod, et rakendada oma paigutusloogikat.

Näide onLayout ülekirjutamisest kohandatud ViewGroup-is:

@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;
    }
}

Siin paigutatakse lapsed vertikaalselt üksteise alla.