首页 > 解决方案 > 如何知道 FragmentStateAdapter 的主要片段项

问题描述

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

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

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

编辑

也许另一种方法是使用全局布局更改侦听器来测试片段的根布局是否 100% 显示?

标签: androidandroid-viewpagerandroid-viewpager2fragmentstateadapter

解决方案


听起来您应该使用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


推荐阅读