我目前在我的pagerslidingtabs上遇到一些奇怪的事情,其中我在recyclerview中的列表被覆盖了相同的视图,除了顶视图不可滚动且背景中的列表可滚动但覆盖。这只是随机发生的,不能轻易复制。只有当我从一个页面快速更改/快速扫描到另一个页面时才会发生这种情况,但如上所述,很难复制相同的问题。这是它的样子:
现在我拥有的是PagerSlidingTabStrip和FragmentPagerAdapter,其中包含带有recyclelerviews列表的片段。我非常确定问题不在于recyclerview列表,而是在使用Pager本身,因为我猜它会创建片段视图,而之前的视图尚未被删除,从而触发此效果。我确保为我的项目创建一个新的片段实例。这是迄今为止的代码:
public class ResultPagerAdapter extends FragmentPagerAdapter {
private final String[] TITLES = { "TAB", "TAB2" };
public ResultPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
@Override
public int getCount() {
return TITLES.length;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return Page1.newInstance(position);
case 1:
return Page2.newInstance(position);
}
}
}
并初始化PagerSlidingTabStrip:
private void initializeTabs() {
//initialize pager
adapter = new ResultPagerAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);
tabs.setDividerColor(getResources().getColor(android.R.color.transparent));
tabs.setUnderlineColor(getResources().getColor(R.color.red));
tabs.setIndicatorColor(getResources().getColor(R.color.blue));
tabs.setIndicatorHeight(new Utils().dpToPx(48));
tabs.setUnderlineHeight(new Utils().dpToPx(4));
tabs.setTextColor(getResources().getColor(R.color.white));
tabs.setViewPager(pager);
}
和寻呼机代码:
public class CustomViewPager extends ViewPager {
private boolean enabled;
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
this.enabled = true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (this.enabled) {
return super.onTouchEvent(event);
}
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (this.enabled) {
return super.onInterceptTouchEvent(event);
}
return false;
}
public void setPagingEnabled(boolean enabled) {
this.enabled = enabled;
}
}
以及我的片段中newInstance的代码,它调用数据的Web服务:
public static SenatorsResult newInstance(int position) {
SenatorsResult f = new SenatorsResult();
Bundle b = new Bundle();
b.putInt(ARG_POSITION, position);
f.setArguments(b);
return f;
}
之前有人遇到过这个问题吗?希望有人可以帮助我。
答案 0 :(得分:0)
尝试使用FragmentStatePagerAdapter而不是FragmentPagerAdapter。
访问http://www.truiton.com/2013/05/android-fragmentstatepageradapter-example/了解详情