奇怪的 Android TabLayout 指示器滚动错误
Odd Android TabLayout Indicator Scrolling Bug
我在 Android 中使用 TabLayout
和 ViewPager
。每当我 运行 代码时,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()
。
谢谢
我在 Android 中使用 TabLayout
和 ViewPager
。每当我 运行 代码时,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()
。
谢谢