android中嵌套的viewpager问题

时间:2014-08-29 05:45:24

标签: android android-fragments android-viewpager

我在水平viewpager中有一个垂直的viewpager。在horzontal viewpager I的第二个片段中,添加了垂直viewpager。垂直viewpager包含带有图像的片段,因此当片段对用户可见时,我开始为图像设置动画,对于使用过的setUserVisibleHint。但是当移动到水平viewpager的第二个片段时,不调用垂直viewpager内的片段的setUserVisibleHint。我已经尝试了所有的方法,创造了oncreate,oncreateview ......但是没有什么对我有用。我被困在这里,请帮助我

1 个答案:

答案 0 :(得分:3)

老问题,但我打了这个,以为我将来可能会帮助像我这样的人。当您有一个包含(外部)片段的外部viewpager时,会出现问题,这些片段本身包含(内部)片段的内部viewpager。在外部片段之间移动时,不会调用内部viewpager中显示的当前片段的setUserVisibleHint。我正在使用FragmentStatePagerAdaptor来控制我的viewpage。

对此的修复是将FragmentStatePagerAdaptor子类化以暴露主要片段并提供setUserVisibleHint方法:

public class CustomPagerAdaptor extends FragmentStatePagerAdaptor {
    private Fragment primary;

    @Override
    public void setPrimaryItem(ViewGroup container, int position, Object object) {
        super.setPrimaryItem(container, position, object);
        primary = (Fragment)object;
    }

    public void setUserVisibleHint(boolean isVisible) {
        if (primary != null){
            primary.setUserVisibleHint(isVisible);
        }
    }
}

然后在外部片段中传递setUserVisibleHint:

@Override
public void setUserVisibleHint(boolean isVisible) {
    super.setUserVisibleHint(isVisible);
    if (mAdaptor != null) mAdaptor.setUserVisibleHint(isVisible);
}