I have a ViewPager
, and I move between fragments using a switch and case
. I can change the title per position, but I would also like to change the background colour per position.
public PagerTabStrip titleStrip;
titleStrip.setBackgroundColor(Color.DKGRAY);
Using this in my onCreateView sets a permanent background colour. The idea I had was to use the titleStrip.setBackgroundColor(Color.DKGRAY); where I switch the fragments or change the title. But it doesn't work properly. Sometimes the colour changes, sometimes it doesn't, sometimes it changes in the wrong fragment.
This is the code where I switch fragments:
@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;
}
First, make suer you have got the titleStrip
when createView
:
titleStrip = (PagerTabStrip) pagerView.findViewById(R.id.pager_title_strip);
then, you can add OnPageChangeListener
to ViewPager
, you can do anything you want in onPageSelected method:
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) {
}
});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.