Frage

Ich schreibe einen Brauch ViewGroup Das ist eine einfache Kombination anderer Ansichten. Die Ansichten scheinen jedoch in willkürlicher Reihenfolge zu sein.

Ich weiß, ich kann das implementieren getChildDrawingOrder() Methode, aber ich war neugierig, wie die Reihenfolge der Ansichten überhaupt bestimmt wurde?


AKTUALISIEREN: Dies ist eine Mindestimplementierung und es funktioniert, aber ich weiß nicht, warum der Indikator immer oben ist, egal was ich tue

public class PaginatedGallery extends ViewGroup {

ViewPager mPager;
CirclePageIndicator mPagerIndicator;

public PaginatedGallery(Context context) {
    super(context);
    mPager = new ViewPager(context);
    mPagerIndicator = new CirclePageIndicator(context);
    addView(mPager);
    addView(mPagerIndicator);
}

public void setAdapter(PaginatedGalleryAdapter adapter) {
    mPager.setAdapter(adapter);
    mPagerIndicator.setViewPager(mPager);
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    final int count = getChildCount();

    for (int i = 0; i< count; i++ ) {
        getChildAt(i).layout(l, t, r, b);
    }

}   
}

Ich weiß, dass ich nicht implementiere onMeasure() und onLayout() ist einfach nur Vanille, aber ich bin nur neugierig, warum Indikator das erste Kind ist und nicht der Pager.

War es hilfreich?

Lösung

Herausgefunden.

Die Ansichten werden einfach in der Reihenfolge genannt, dass sie dem Elternteil hinzugefügt wurden.

In meinem Fall befand sich eine Ansicht über die andere auf der Z-Achse, während ich dachte, dass sie auf der Y-Achse über dem anderen lag, aber das liegt daran, dass der Pager oben einen leeren Raum hat, in dem der Indikator anscheinend passend war.

Dummer Fehler !!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top