【问题标题】:Odd Android TabLayout Indicator Scrolling Bug奇怪的 Android TabLayout 指示器滚动错误
【发布时间】:2018-04-06 17:07:28
【问题描述】:

我在 Android 中使用 TabLayoutViewPager。每当我运行代码时,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) }

我的 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 scroll android-viewpager android-tablayout viewpagerindicator


    【解决方案1】:

    好的,所以问题是我正在用 Android 的默认 Fragment 类填充FragmentPagerAdapter它没有附加布局。 当我制作自己的片段并膨胀布局时,TabLayout Indicator 开始正常工作了。

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

    【讨论】:

      【解决方案2】:
      AmpPagerAdapter(childFragmentManager)
      

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

      谢谢

      【讨论】:

        猜你喜欢
        • 2021-03-04
        • 2015-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多