私はTabLayoutのタブアイコンの色を変更しようとしていますが、実際にはaddOnTabSelectedListenerを使用してこれを実現しましたが、これはタブ間でスワイプする場合にのみ有効です。だから、最初のタブのアイコンの色は、タブを変更したときの色と同じにしたいと思っています。ViewPagerOnTabSelectedListenerをプログラムで呼び出すにはどうすればよいですか?
私はviewPager.setCurrentItem()を試しましたが、これは、渡されたインデックスが0(最初のタブ)と異なる場合にのみ機能します。
したがって、どのようにしてViewPagerOnTabSelectedListenerをプログラムで呼び出すことができますか?
これは私のコードです:拳の時間のためにそれを実行したときに
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {
@Override
public void onTabSelected(TabLayout.Tab tab){
super.onTabReselected(tab);
int tabIconColor = ContextCompat.getColor(MainActivity.this,R.color.prehipertension);
tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
}
@Override
public void onTabUnselected(TabLayout.Tab tab){
super.onTabUnselected(tab);
int tabIconColor = ContextCompat.getColor(MainActivity.this,R.color.blancoTransparencia);
tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
int tabIconColor = ContextCompat.getColor(MainActivity.this,R.color.blanco);
tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
}
});
viewPager.setCurrentItem(0);
2番目のタブにスワイプして(最初のタブに戻ったとき)、アイコンの色が正しく変更されます。