我使用TabLayout与ViewPager相结合,我为我的选项卡设置了自定义视图。如果选中和取消选中选项卡(自定义视图根据选定/未选定选项卡进行更改),一切都按预期工作。
问题是在第一次启动时,onTabSelected方法从不被调用。
这里是我的活动:Android - onTabSelected第一次没有使用自定义视图调用
setupViewPager(viewPager);
tabLayout.setupWithViewPager(viewPager);
for (int i = 0; i < tabLayout.getTabCount(); i++) {
tabLayout.getTabAt(i).setCustomView(getViewAt(i));
}
tabLayout.addOnTabSelectedListener(this);
这是setupViewPager等方法:
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);
}
有人可以帮忙吗?
2017-07-26
Leonald
在Android应用中,开发者遇到一个问题:当首次启动应用时,TabLayout的onTabSelected方法未被调用。尽管自定义视图在选中和取消选中时能正常更新,但在启动时不触发该方法。问题出现在使用TabLayout与ViewPager结合,并设置了自定义选项卡视图的场景。开发者已经尝试了初始化和设置监听器,但问题依然存在。
5010

被折叠的 条评论
为什么被折叠?



