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