質問

私はカスタムを書いています 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つのビューはZ軸上の他のビューよりも上にありましたが、Y軸の他のビューは他のビューよりも上にあると考えていましたが、それは、ページャーにはインジケータが一見フィットしているように見える上部に空のスペースがあるためです。

愚かな間違い!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top