在ViewGroup子类组件中,如何判断引用的ViewPager何时被初始化?

时间:2014-09-03 22:16:00

标签: android android-viewpager viewgroup

我正在构建一个活动,其中包含ViewPager,我正在实现一个自定义页面指示器组件,该组件将显示视图寻呼机当前显示的页面。我的问题是:我的指标组件如何知道视图寻呼机何时完全初始化?

此组件是FrameLayout的子类,我将declare-styleable属性作为此组件的“寻呼机”参考。目的是让用户在布局XML中为我的组件提供对ViewPager组件的引用。

<resources>
    <declare-styleable name="Indicator">
        <attr name="pager" format="reference"/>
    </declare-styleable>
</resources>

在活动的onCreate方法中,我将寻呼机适配器分配给ViewPager组件:

    ViewPager viewPager = (ViewPager)findViewById(R.id.pager);
    viewPager.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) { ...

我的指标组件必须根据设置在ViewPager组件中的寻呼机适配器的内容创建子视图,因此我必须在设置适配器后创建指示符子视图。

我应该使用哪种回调来确保上述setAdapter来电,但在屏幕上显示活动之前,设置我的子视图?

1 个答案:

答案 0 :(得分:0)

我最近发现自己处于类似情况。

将ViewPager的post方法与您自己的runnable一起使用。这基本上是在视图测量之后将代码排队。我认为这可以作为一个适当的“回调”。

viewPager.post(new Runnable() {
   @Override
   public void run() {
    //indicator stuff
   }
});