У меня примерно 3 вкладки, у каждой вкладки есть значок.
Я хочу изменить значок, когда пользователь меняет вкладку.
Пытался поставить условия в getPageTitle, но это не работает.
Может быть, getPageTitle запускается только один раз . Вот мой код.
public class searchView extends ActionBarActivity {
private Toolbar toolbar;
private ViewPager mPager;
private SlidingTabLayout mTabs;
public static final int HISTORY = 0;
public static final int FAVORITES = 1;
public static final int CATEGORY = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_view);
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
mPager.setCurrentItem(Global.setCurrentItem);
mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (position == 0) {
getSupportActionBar().setTitle("History");
} else if (position == 1) {
getSupportActionBar().setTitle("Favorites");
} else {
getSupportActionBar().setTitle("Category");
}
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
mTabs = (SlidingTabLayout) findViewById(R.id.tabs);
mTabs.setCustomTabView(R.layout.custom_tab_view, R.id.tabText);
mTabs.setDistributeEvenly(true);
mTabs.setBackgroundColor(getResources().getColor(R.color.primaryColor));
mTabs.setSelectedIndicatorColors(getResources().getColor(R.color.white));
mTabs.setViewPager(mPager);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_search, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
case R.id.actSearch:
GlobalVar.getActivity = 3;
startActivity(new Intent(this, searchingView.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
class MyPagerAdapter extends FragmentPagerAdapter {
int icons[] = {R.drawable.ic_history, R.drawable.ic_favorite_white, R.drawable.ic_category};
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment myFragment = null;
switch (position) {
case HISTORY:
myFragment = FragmentHistory.newInstance("", "");
break;
case FAVORITES:
myFragment = FragmentFavorites.newInstance("", "");
break;
case CATEGORY:
myFragment = FragmentCategory.newInstance("", "");
break;
}
return myFragment;
}
@Override
public CharSequence getPageTitle(int position) {
Drawable drawable = getResources().getDrawable(icons[position]);
drawable.setBounds(0, 0, 72, 72);
ImageSpan imageSpan = new ImageSpan(drawable);
SpannableString spannableString = new SpannableString(" ");
spannableString.setSpan(imageSpan, 0, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return spannableString;
}
@Override
public int getCount() {
return 3;
}
}
}