Android ViewPager滚动页面
我的应用程序中有一个ViewPager,它可以滚动3个片段。问题是滚动滞后。起初我认为这是因为我更改了onPageSelected方法中的指示器。但后来发现这不是问题。下面是代码..等待您的帮助 代码: ViewPageActivity.java:Android ViewPager滚动页面,android,android-viewpager,Android,Android Viewpager,我的应用程序中有一个ViewPager,它可以滚动3个片段。问题是滚动滞后。起初我认为这是因为我更改了onPageSelected方法中的指示器。但后来发现这不是问题。下面是代码..等待您的帮助 代码: ViewPageActivity.java: binding.viewpager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager())); binding.viewpager.setCurrentItem(0);
binding.viewpager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));
binding.viewpager.setCurrentItem(0);
binding.viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
PagerAdapter.java:
public class ViewPagerAdapter extends FragmentPagerAdapter
{
ArrayList instances;
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
instances=new ArrayList();
instances.add(new Frag1());
instances.add(new Frag2());
instances.add(new Frag3());
}
@Override
public int getCount() {
if (instances!=null) {
return instances.size();
}
else {
return 0;
}
}
@Override
public Fragment getItem(int position) {
Toast.makeText(getApplicationContext(),Integer.toString(position),Toast.LENGTH_SHORT).show();
return (Fragment) instances.get(position);
}
// @Override
// public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
// return false;
// }
}
Frag1.java:
public class Frag1 extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.frag1,container,false);
return view;
}
}
Frag2.java:
public class Frag2 extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.frag2,container,false);
return view;
}
}
Frag3.java:
public class Frag3 extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.frag3,container,false);
return view;
}
}
请尝试设置setOffscreenPageLimit(int limit)它正在工作。请您向我解释为什么它现在可以平滑滚动。这会保留您的片段并防止它们重新创建,因此您在滚动时不会膨胀UI或执行某些操作。检查这个:我想你可以使用FragmentStatePagerAdapter