Java Android TabLayout更新选项卡';s观点
我有一个TabLayout,在其中我使用Java Android TabLayout更新选项卡';s观点,java,android,android-fragments,Java,Android,Android Fragments,我有一个TabLayout,在其中我使用TabLayout.addTab(tab,I)动态添加选项卡。当我在已加载片段的位置添加新选项卡时,片段不会更新 例如,当我最初添加两个选项卡时会发生这种情况,这两个选项卡会被加载,然后在位置1添加另一个选项卡。位置1处的选项卡未更新。从FragmentPagerAdapter触发更新(我假设调用getItem(int position))需要做什么 当我调用tabLayout.addTab(tab,I)时,我尝试使用侦听器并在FragmentPagerA
TabLayout.addTab(tab,I)动态添加选项卡代码>。当我在已加载片段的位置添加新选项卡时,片段不会更新
例如,当我最初添加两个选项卡时会发生这种情况,这两个选项卡会被加载,然后在位置1添加另一个选项卡。位置1处的选项卡未更新。从FragmentPagerAdapter触发更新(我假设调用getItem(int position)
)需要做什么
当我调用tabLayout.addTab(tab,I)时,我尝试使用侦听器并在FragmentPagerAdapter上调用notifyDataSetChanged()
代码>,但这并不能解决问题。我还尝试调用TabLayout上的invalidate
。调用TabLayout.removeAllTabs()代码>每次要添加选项卡时。然后只需按所需顺序添加选项卡
或者您可以编写mviewpage.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();
}
}
/**
*设置应保留到页面两侧的页数
*视图层次结构中处于空闲状态的当前页面。除此之外的页面
*需要时,将从适配器重新创建限制。
*
*这是作为优化提供的。如果你事先知道号码
*您将需要支持的页面数,或具有适当的延迟加载机制
*在您的页面上,调整此设置可以提高平滑度
*分页动画和交互的功能。如果页数较少(3-4页)
*您可以一次保持所有活动状态,这样就可以减少在布局中花费的时间
*新创建的视图子树作为用户页面来回移动
*
*您应该将此限制保持在较低的水平,尤其是在页面布局复杂的情况下。
*此设置默认为1
*
*@param限制空闲状态下屏幕外保留的页面数。
*/
公共无效设置OffScreenPageLimit(整数限制){
如果(限制<默认\u屏幕外\u页面){
Log.w(标记,“请求的屏幕外页面限制”+限制+“太小;默认为”+
默认(屏幕外页面);
限制=默认的屏幕外页面;
}
if(限制!=mOffscreenPageLimit){
mOffscreenPageLimit=限制;
填充();
}
}