我正在构建一个活动,其中包含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
来电,但在屏幕上显示活动之前,设置我的子视图?
答案 0 :(得分:0)
我最近发现自己处于类似情况。
将ViewPager的post方法与您自己的runnable一起使用。这基本上是在视图测量之后将代码排队。我认为这可以作为一个适当的“回调”。
viewPager.post(new Runnable() {
@Override
public void run() {
//indicator stuff
}
});