2

我有一个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;
    }
4

1 回答 1

4

首先,确保你有titleStripwhen createView

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

然后,你可以添加OnPageChangeListenerViewPager,你可以在 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) {
    }
});
于 2013-07-29T02:56:50.877 回答