我有一个ViewPager,我使用switch and case在片段之间移动。我可以更改每个位置的标题,但我也希望更改每个位置的背景色。

public PagerTabStrip titleStrip;
    titleStrip.setBackgroundColor(Color.DKGRAY);

在我的oncreateview中使用这个设置永久的背景色。我的想法是使用titleStrip.setBackgroundColor(color.dkGray);在这里我切换片段或更改标题。但它不能正常工作。有时颜色会改变,有时不会,有时会在错误的片段中改变。
这是我切换片段的代码:
@Override
    public Fragment getItem(int position) {

        switch (position) {

        case 0:  titleStrip.setBackgroundColor(Color.DKGRAY); // These
                 titleStrip.setTextColor(Color.WHITE); // This doesn't work either

            return new Fragment0();

        case 1:
            return new Fragment1();
        case 2:
            return new Fragment3();
        }
        return null;
    }

最佳答案

首先,使你得到了titleStripcreateView时:

titleStrip = (PagerTabStrip) pagerView.findViewById(R.id.pager_title_strip);

然后,您可以将OnPageChangeListener添加到ViewPager,您可以在onpageselected方法中执行任何您想要的操作:
mPager.setOnPageChangeListener(new OnPageChangeListener() {

    @Override
    public void onPageSelected(int position) {
        switch (position) {
        case 0:
            titleStrip.setBackgroundColor(Color.BLUE);
            break;

        case 1:
            titleStrip.setBackgroundColor(Color.GRAY);
            break;
        }
    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    }

    @Override
    public void onPageScrollStateChanged(int state) {
    }
});

10-08 07:50
查看更多