android - 如何知道 FragmentStateAdapter 的主要片段项
问题描述
我有一个视图寻呼机类型FragmentStateAdapter
,想知道主要片段何时就位,例如 100% 可见。FragmentStateAdapter
甚至支持这个吗?我已经尝试过这篇文章的方法,但没有运气。
寻呼机中的每个片段都对宿主活动有一定的控制权,但该控制权必须是互斥的。因此,例如取决于哪个片段 100% 可见,主机活动布局中的按钮将改变颜色。但是颜色必须取决于哪个片段是主要的,而不是取决于哪个片段被恢复(例如,不可见的相邻片段可以处于恢复状态)。
我正在使用ViewPager2
和小部件类。
编辑
也许另一种方法是使用全局布局更改侦听器来测试片段的根布局是否 100% 显示?
解决方案
听起来您应该使用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
推荐阅读
- json - 将 JSON 文件加载到 Elasticsearch
- python - 使用测试数据集检查我的 Keras 模型的预测
- database-design - 数据库设计:尽可能通用地将表单字段存储在数据库中
- swift - 如何检查客户是否可以使用 StoreKit 进行应用内购买?
- html - 直接在页面上看到 CSS 的变化
- python - 我被困在从 xml 文件中加载数据
- node.js - 如果状态为 400,Xhr 不会记录响应
- amazon-s3 - 我正在使用 AWS 弹性转码器进行来自 s3 的视频对话。它在 s3 中创建多个输出文件夹和多个子文件夹
- php - 为什么 Id AutoGenerated 在 UPDATE with Relation 中使用 Symfony Doctrine 重新生成?
- android - Xamarin Android SSL 身份验证失败