J'utilise un TabLayout
combiné avec un ViewPager
et j'ai mis une vue personnalisée pour mes onglets. Tout fonctionne comme prévu lorsque les onglets sont sélectionnés et non sélectionnés (la vue personnalisée est modifiée en fonction de l'onglet sélectionné/non sélectionné).
Le problème est au premier lancement, la méthode onTabSelected n'est jamais appelée.
Voici mon activité:Android - onTabSelected pas appelé à la première fois avec customView
setupViewPager(viewPager);
tabLayout.setupWithViewPager(viewPager);
for (int i = 0; i < tabLayout.getTabCount(); i++) {
tabLayout.getTabAt(i).setCustomView(getViewAt(i));
}
tabLayout.addOnTabSelectedListener(this);
Ce sont les setupViewPager
et d'autres méthodes:
private void setupViewPager(ViewPager viewPager) {
MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(getChildFragmentManager(), getContext(), startDate, endDate);
viewPager.setAdapter(adapter);
}
private View getViewAt(int i){
final Date currentDate = CalendarUtility.addDay(startDate, i);
View v = LayoutInflater.from(getContext()).inflate(R.layout.layout_custom_tab, null);
TextView day = (TextView) v.findViewById(R.id.day);
TextView num = (TextView) v.findViewById(R.id.num);
day.setText(CalendarUtility.getDayOfWeek(currentDate));
num.setText(CalendarUtility.getDayOfMonth(currentDate));
return v;
}
@Override
public void onTabSelected(TabLayout.Tab tab) {
Toast.makeText(getContext(), "Tab #"+tab.getPosition(), Toast.LENGTH_LONG).show();
TextView num = (TextView)tab.getCustomView().findViewById(R.id.num);
num.getBackground().setColorFilter(textDarkColor, PorterDuff.Mode.SRC_IN);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
TextView num = (TextView)tab.getCustomView().findViewById(R.id.num);
num.getBackground().setColorFilter(pinkDarkColor, PorterDuff.Mode.SRC_IN);
}
Voici enfin le comportement lors de la navigation dans les onglets
https://i.stack.imgur.com/Scm9P.png
Les onglets premier lancement, aucun onglet n'est sélectionné
https://i.stack.imgur.com/a6Xgd.png
Quelqu'un peut-il vous aider s'il vous plaît?
La première solution fonctionne comme un charme, et bien sûr le deuxième aussi @Piyush – Leonald
@Leonald Great! – Piyush