2016-02-24 70 views
0

我有一个TabLayout,我在其中使用tabLayout.addTab(tab, i);动态添加选项卡。当我在已经加载片段的位置添加新选项卡时,片段不会更新。Android TabLayout更新选项卡的视图

例如,这种情况发生在我最初添加两个选项卡时,这些选项卡会被加载,然后在位置1添加另一个选项卡。位置1的选项卡不会被更新。我需要做些什么来触发FragmentPagerAdapter的更新(我假设致电getItem(int position))?

当我打电话给tabLayout.addTab(tab, i);时,我曾尝试过使用侦听器并在FragmentPagerAdapter上调用notifyDataSetChanged(),但这并未解决问题。我也尝试在TabLayout上调用invalidate

回答

0

每次您想要添加标签时,请致电tabLayout.removeAllTabs();。然后只需按照需要的顺序添加选项卡。

或者你可以写mViewPager.setOffscreenPageLimit(0);其中mViewPager是你的viewpager。这是这种方法的定义 -

/** 
    * Set the number of pages that should be retained to either side of the 
    * current page in the view hierarchy in an idle state. Pages beyond this 
    * limit will be recreated from the adapter when needed. 
    * 
    * <p>This is offered as an optimization. If you know in advance the number 
    * of pages you will need to support or have lazy-loading mechanisms in place 
    * on your pages, tweaking this setting can have benefits in perceived smoothness 
    * of paging animations and interaction. If you have a small number of pages (3-4) 
    * that you can keep active all at once, less time will be spent in layout for 
    * newly created view subtrees as the user pages back and forth.</p> 
    * 
    * <p>You should keep this limit low, especially if your pages have complex layouts. 
    * This setting defaults to 1.</p> 
    * 
    * @param limit How many pages will be kept offscreen in an idle state. 
    */ 
    public void setOffscreenPageLimit(int limit) { 
     if (limit < DEFAULT_OFFSCREEN_PAGES) { 
      Log.w(TAG, "Requested offscreen page limit " + limit + " too small; defaulting to " + 
        DEFAULT_OFFSCREEN_PAGES); 
      limit = DEFAULT_OFFSCREEN_PAGES; 
     } 
     if (limit != mOffscreenPageLimit) { 
      mOffscreenPageLimit = limit; 
      populate(); 
     } 
    } 
相关问题