奇怪的 Android TabLayout 指示器滚动错误

Odd Android TabLayout Indicator Scrolling Bug

我在 Android 中使用 TabLayoutViewPager。每当我 运行 代码时,TabLayout Indicator 都会表现得很奇怪。它不是自动捕捉到下一个选项卡,而是像一个水平滚动条。所以我有一个 TabLayout Indicator,它实际上挂在两个选项卡之间。而且没有错误。这是我的代码:

我的onCreate()方法:

val tabLayout = findViewById<TabLayout>(R.id.tl)
val viewPager = findViewById<ViewPager>(R.id.vp)

viewPager.adapter = AmpPagerAdapter(supportFragmentManager)
tabLayout.setupWithViewPager(viewPager)

val icons = arrayOf(R.drawable.ic_hot_24dp, R.drawable.ic_person_24dp)
icons.forEachIndexed { index, i -> tabLayout.getTabAt(index)?.setIcon(i) }

我的 FragmentPagerAdapter:

class AmpPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) {

    private val pages = arrayListOf(Fragment(), Fragment())
    override fun getItem(position: Int): Fragment = pages[position]
    override fun getCount(): Int = pages.size
}

首先我以为我添加了太多标签,但事实并非如此,因为我的页面数组列表长度为 2。当我点击标签时指示器工作正常。

有什么问题?

好的,问题是我用 Android 中的默认片段 class 填充了 FragmentPagerAdapter 没有附加布局。 当我制作自己的片段并填充布局时,TabLayout Indicator 开始正常工作。

请注意,实际问题是 没有布局膨胀。 这就是为什么填充默认 Fragment class 是一个问题。

AmpPagerAdapter(childFragmentManager)

我在使用 getSupportFragmentManager() 时遇到了同样的问题 正如@SynerFlow 自己发布的答案,这就是原因。 我的解决方案是改用 getChildFragmentManager()

谢谢