Java 动态删除选项卡时,支持库ViewPager/TableLayout上的选项卡指示器不正确

Java 动态删除选项卡时,支持库ViewPager/TableLayout上的选项卡指示器不正确,java,android,android-support-library,viewpagerindicator,android-tablayout,Java,Android,Android Support Library,Viewpagerindicator,Android Tablayout,好的,我一直在使用新的支持库的查看页面和表格布局,在我的应用程序中,我根据用户是否打开/关闭了搜索视图动态添加和删除选项卡 我的实施工作;但是,选项卡指示器似乎存在视觉缺陷。显示正确的选项卡片段,但选项卡指示器位于错误的选项卡下 我做了很多测试,看看这是否是我的问题,但后来发现这是支持库的一个bug。我发送了一个,但报告的状态被标记为userError。 所以谷歌的开发者给了我一个想法。我试着说修复;然而,它并没有解决任何问题。在过去的几个小时里,我做了一些更深入的测试,他说正确的行为取决于是否

好的,我一直在使用新的
支持库
查看页面
表格布局
,在我的应用程序中,我根据用户是否打开/关闭了
搜索视图
动态添加和删除选项卡

我的实施工作;但是,选项卡指示器似乎存在视觉缺陷。显示正确的选项卡片段,但选项卡指示器位于错误的选项卡下

我做了很多测试,看看这是否是我的问题,但后来发现这是支持库的一个bug。我发送了一个,但报告的状态被标记为
userError。

所以谷歌的开发者给了我一个想法。我试着说修复;然而,它并没有解决任何问题。在过去的几个小时里,我做了一些更深入的测试,他说正确的行为取决于是否调用了
ViewPager
OnPageChangedListener

我在我的bug报告中添加了额外的信息,但由于它被标记为userError,我不知道开发人员是否会响应。所以我现在在这里

屏幕录制 {注意:单击此链接将自动下载屏幕录制[.mp4]}。注意选项卡指示器。它应该转到上一个显示的选项卡,但不会

问题 1.指示灯正确,显示的碎片错误 StackTrace:

首先转到第二个选项卡,单击SearchView,然后关闭SearchView

On MenuItemCompat.OnActionExpandListener::onMenuItemActionCollapse(...)

    clearAllTabs()           [A, B, C, Search] -> []
    addTabs(displayedTabs)   [] -> [A, B, C]

    ViewPager.OnPageChangeListener::OnPageSelected(2)
    ViewPager.OnPageChangeListener::OnPageScrolled(2, 0.0, 0)

    viewPager.setCurrentItem(1, true)

    ViewPager.OnPageChangeListener::onPageScrollStateChanged(2)
    ViewPager.OnPageChangeListener::onPageSelected(1)

    tabLayout.removeAllTabs()
    tabLayout.setupWithViewPager(viewPager);

    ViewPager.OnPageChangeListener::onPageSelected(0) [NOTE: this statement does not fire if Tab A was displayed before opening SearchView]

    return true

    ViewPager.OnPageChangeListener::onPageScrolled(0, 0.0, 0)

    // UI display is updated (Tab 1 fragment is displayed, but tab indicator is on 2nd Tab)

    ViewPager.OnPageChangeListener::onPageScrollStateChanged(0)
On MenuItemCompat.OnActionExpandListener::onMenuItemActionCollapse(...)
    clearAllTabs()           [A, B, C, Search] -> []
    addTabs(displayedTabs)   [] -> [A, B, C]

    ViewPager.OnPageChangeListener::OnPageSelected(2)
    ViewPager.OnPageChangeListener::OnPageScrolled(2, 0.0, 0)

    tabLayout.removeAllTabs()
    tabLayout.setupWithViewPager(viewPager);

    ViewPager.OnPageChangeListener::onPageScrollStateChanged(2)
    ViewPager.OnPageChangeListener::onPageSelected(0)

    viewPager.setCurrentItem(1, true)

    ViewPager.OnPageChangeListener::onPageSelected(1)

    return true

    ViewPager.OnPageChangeListener::onPageScrolled(1, 0.0, 0)

    // UI display is updated (Tab 2 fragment is displayed, but tab indicator is on 3rd Tab)

    ViewPager.OnPageChangeListener::onPageScrollStateChanged(0)
2.正确显示的片段,错误的选项卡指示器 StackTrace:

首先转到第二个选项卡,单击SearchView,然后关闭SearchView

On MenuItemCompat.OnActionExpandListener::onMenuItemActionCollapse(...)

    clearAllTabs()           [A, B, C, Search] -> []
    addTabs(displayedTabs)   [] -> [A, B, C]

    ViewPager.OnPageChangeListener::OnPageSelected(2)
    ViewPager.OnPageChangeListener::OnPageScrolled(2, 0.0, 0)

    viewPager.setCurrentItem(1, true)

    ViewPager.OnPageChangeListener::onPageScrollStateChanged(2)
    ViewPager.OnPageChangeListener::onPageSelected(1)

    tabLayout.removeAllTabs()
    tabLayout.setupWithViewPager(viewPager);

    ViewPager.OnPageChangeListener::onPageSelected(0) [NOTE: this statement does not fire if Tab A was displayed before opening SearchView]

    return true

    ViewPager.OnPageChangeListener::onPageScrolled(0, 0.0, 0)

    // UI display is updated (Tab 1 fragment is displayed, but tab indicator is on 2nd Tab)

    ViewPager.OnPageChangeListener::onPageScrollStateChanged(0)
On MenuItemCompat.OnActionExpandListener::onMenuItemActionCollapse(...)
    clearAllTabs()           [A, B, C, Search] -> []
    addTabs(displayedTabs)   [] -> [A, B, C]

    ViewPager.OnPageChangeListener::OnPageSelected(2)
    ViewPager.OnPageChangeListener::OnPageScrolled(2, 0.0, 0)

    tabLayout.removeAllTabs()
    tabLayout.setupWithViewPager(viewPager);

    ViewPager.OnPageChangeListener::onPageScrollStateChanged(2)
    ViewPager.OnPageChangeListener::onPageSelected(0)

    viewPager.setCurrentItem(1, true)

    ViewPager.OnPageChangeListener::onPageSelected(1)

    return true

    ViewPager.OnPageChangeListener::onPageScrolled(1, 0.0, 0)

    // UI display is updated (Tab 2 fragment is displayed, but tab indicator is on 3rd Tab)

    ViewPager.OnPageChangeListener::onPageScrollStateChanged(0)
github 这是我的

  • SearchView折叠代码


有人能复制这个吗?我按照谷歌开发者的建议做了,但不起作用。所以我仍然认为这不是用户错误。