动态更新TabLayout而不更改选定的选项卡

时间:2015-12-16 20:19:17

标签: android android-layout android-viewpager android-tablayout

我想使用 Material Design Support库实现向导。

我正在使用ViewPagerTablayout但我在动态添加新标签时遇到问题。

首先,我使用onCreate方法设置我的小部件:

viewPager = (ViewPager) findViewById(R.id.tab_viewpager);
tabLayout = (TabLayout) findViewById(R.id.tab_layout);

adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFrag(new DummyFragment(), "1");
adapter.addFrag(new DummyFragment(), "2");
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);

然后我想在点击列表中的元素时添加另一张卡片:

adapter.addFrag(new DummyFragment(), "3");
adapter.notifyDataSetChanged();
tabLayout.setTabsFromPagerAdapter(adapter);

问题是:添加后,所选卡片首先重置。

如何防止这种行为?

2 个答案:

答案 0 :(得分:0)

刚遇到同样的问题,幸运的是找到了一个解决方案(不是一个很好的解决方案,但它确实有效):

当您需要更新标签时:

pageradapter.notifyDataSetChanged();
for (int i = 0; i < viewpager.getCount(); i++) {
    sectionsTabLayout.getTabAt(i).setText(sectionsViewPagerAdapter.getPageTitle(i));
}

答案 1 :(得分:0)

这是对@Kalpit代码的略微修改。 你必须动态地将这个新选项卡添加到我们的布局中,并通过调用tablayout调用相同的方法来分配标题,当你使用setupWithViewPager方法时,我会使用这个方法来调用尚未创建的标签。但你可能会尝试为他们分配一些头衔。

select