我需要你的帮助。我有一个带有tintable imageview和textview的tablayout。我想突出显示默认选择的选项卡,这是第一个。 这是我的示例代码:
TabLayout.Tab tab;
mTabs = (TabLayout) findViewById(R.id.tabs);
mViewpager = (ViewPager) findViewById(R.id.viewpager);
MyPagerAdapter pagerAdapter = new MyPagerAdapter(getSupportFragmentManager());
mViewpager.setAdapter(pagerAdapter);
mViewpager.addOnPageChangeListener(new MyPageScrollListener(mTabs));
mTabs.setupWithViewPager(mViewpager);
// Iterate over all tabs and set the custom view
for (int i = 0; i < mTabs.getTabCount(); i++) {
tab = mTabs.getTabAt(i);
tab.setCustomView(pagerAdapter.getTabView(i));
}
mTabs.setOnTabSelectedListener(new MyOnTabSelectedListener());
tab.select();
但它正在选择最后一个标签。这里有人知道如何解决这个问题吗?我很感激任何帮助。谢谢!
答案 0 :(得分:1)
最后,我在这里找到了一个解决方案:link
我补充说:
[sender setBackgroundImage: [UIImage imageNamed:@"cardback"] forState:UIControlStateNormal];
它有效!
答案 1 :(得分:0)
您选择了最后一个标签。 看一下你的源代码:)
TabLayout.Tab tab;
...
for (int i = 0; i < mTabs.getTabCount(); i++) {
tab = mTabs.getTabAt(i);
}
...
tab.select();
tab
是您使用getTabAt(int position)
获得的最后一个标签。
因此,当您想要选择第一个标签时,这将有助于
maTabs.getTabAt(0).select();
另一个(可能更好的)解决方案是将for循环转换为
for (int i = mTabs.getTabCount() - 1; i >= 0; i--) {
tab = mTabs.getTabAt(i);
}
然后你的&#34;最后&#34;您进入此循环的tab
是TabLayout
中的第一个标签。
完整的示例代码看起来像this gist。
答案 2 :(得分:0)
我找到了更好的解决方案。相反,如果从TabLayout中选择选项卡,您可以使用ViewPager执行此操作,如下所示:
ViewPager viewPager = (ViewPager) findViewById(R.id.restaurant_menu_viewPager);
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
// ViewPager mit TabLayout verknüpfen
TabLayout tabLayout = (TabLayout) findViewById(R.id.restaurant_menu_tabLayout);
tabLayout.setupWithViewPager(viewPager);
viewPager.setCurrentItem(1);