奇怪的Android TabLayout指标滚动错误

时间:2017-12-15 10:09:54

标签: android scroll android-viewpager android-tablayout viewpagerindicator

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

我的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) }

My 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. 当我点击选项卡时,指标工作正常。

问题是什么?

2 个答案:

答案 0 :(得分:0)

好吧,问题是,我正在使用Android的默认Fragment类填充FragmentPagerAdapter没有附加布局。当我创建自己的片段并充气时布局,TabLayout指标开始正常工作。

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

答案 1 :(得分:0)

AmpPagerAdapter(childFragmentManager)

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

谢谢