【问题标题】:How to know primary fragment item of FragmentStateAdapter如何知道 FragmentStateAdapter 的主要片段项
【发布时间】:2020-07-16 22:29:56
【问题描述】:

我有一个视图寻呼机类型FragmentStateAdapter 并且想知道主要片段何时就位,例如100% 可见。 FragmentStateAdapter 甚至支持这个吗?我已经尝试过这个post 的方法,但没有运气。

分页器中的每个片段对宿主活动都有一定的控制权,但该控制权必须是互斥的。因此,例如取决于哪个片段 100% 可见,主机活动布局中的按钮将改变颜色。但是颜色必须取决于哪个片段是主要的,而不是取决于哪个片段被恢复(例如,不可见的相邻片段可以处于恢复状态)。

我正在使用ViewPager2 和小部件类。

编辑

也许另一种方法是使用global layout change listener 来测试片段的根布局是否 100% 显示?

【问题讨论】:

    标签: android android-viewpager android-viewpager2 fragmentstateadapter


    【解决方案1】:

    听起来你应该使用ViewPager2.OnPageChangeCallback

    当页面被选中时会调用onPageSelected()回调,你可以根据ViewPager的位置来做逻辑。

    viewPager.registerOnPageChangeCallback(
            object: ViewPager2.OnPageChangeCallback() {
                override fun onPageSelected(position: Int) {
                    super.onPageSelected(position)
                    when (position) {
                        0 -> {
                            //Set button color
                        }
                        1 -> {
                            //Set button color to something else
                        }
                        else -> {
    
                        }
                    }
                }
            }
    )
    

    如果使用当前显示的片段类型比使用位置更适合您的需求,您可以在适配器中使用对片段的引用,请参阅此处了解更多信息:https://stackoverflow.com/a/36504458/4409409

    【讨论】:

    • 这可行,另一个观察结果是该片段已被寻呼机 onResumed。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多