I have like 3 tabs, each tab has an icon.
I want to change the icon when the user change the tab.
Tried to put conditions in getPageTitle but its not working.
Maybe getPageTitle run only once.
Here's my code.
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;
}
}
}