Android - Детский порядок в Custom ViewGroup - PullRequest
1 голос
/ 16 февраля 2012

Я пишу пользовательский ViewGroup, который представляет собой простую комбинацию других представлений.Однако представления выглядят в произвольном порядке.

Я знаю, что могу реализовать метод getChildDrawingOrder(), но мне было любопытно, как порядок просмотров был определен в первую очередь?


ОБНОВЛЕНИЕ: Это минимальная реализация, и она работает, но я не знаю, почему индикатор всегда сверху, независимо от того, что я делаю

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

}   
}

Я знаю, что не внедряю onMeasure(), а onLayout() просто ваниль, но мне просто любопытно, почему индикатор - это первый ребенок, а не пейджер.

1 Ответ

0 голосов
/ 16 февраля 2012

Разобрался.

Представления просто вызываются в том порядке, в котором они были добавлены к родителю.

В моем случае один вид был выше другого на оси Z, тогда как я думал, что он был выше другого на оси Y, но это потому, что у пейджера есть пустое место наверху, где, казалось бы, индикатор фитинг.

Глупая ошибка !!

...