问题标签 [android-viewpager2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 页面包含带有 LayoutTransition(或 animateLayoutChanges="true")的 ViewGroup,这会干扰滚动动画
我在 ViewPager2 中使用片段,我注意到生产中的两个相关 IllegalStateExceptions(我自己无法重现)发生在运行 Android 8 或 9 的小米、玉龙、华硕、vivo 等设备中:
和
在环顾四周时,我通过了以下线程:https://issuetracker.google.com/issues/129530305,据我理解,它似乎总结为animateLayoutChanges
在 viewPager2 的任何父布局上设置为 false ,这就是我所做的。不幸的是,这并没有解决我的问题。然后我发现了另一个线程:java.lang.IllegalStateException: Page can only be offset by a positive amount,这似乎没有多大帮助。知道还有什么可能导致问题吗?
android - 如何在新的 ViewPager2 中禁用 Fragment 的销毁?
在FragmentPagerAdapter
I can overridedestroyItem
方法中,只需删除行super.destroyItem(container, position, object);
然后片段将不再被删除。但是在新的FragmentStateAdapter
我还没有找到同样的方法。
java - ViewPager2:如何实现独立片段
我知道这是一个广泛的问题,但问题如下。我有一个列出 TODO 任务的片段。现在我想添加一个滑动视图——第二页——列出已经完成的任务。所以基本上我想要实现的目标是这样的:
这意味着我需要在两个屏幕之间共享数据。另请注意,这两个页面需要具有完全不同的布局。
我已经完成了研究,全新的 ViewPager2 似乎是要走的路。 但是,官方文档并没有真正谈论我的用例。他们似乎有使用相同布局的页面,并且彼此之间不共享数据: https ://developer.android.com/guide/navigation/navigation-swipe-view-2
由于 ViewPager2 是全新的,我决定立即发布 Stackoverflow 问题,因为我很肯定我的用例是最受欢迎的,因此会有更多人提出相同的问题。
Summa summarum:如何使用新的 ViewPager2 库实现两个具有独立布局的 Fragment 共享数据和滑动视图本身。
java - ViewPager2/Tabs 问题与 ViewModel 状态
我遵循 MVVM 模式——这意味着我为每个片段都有一个 ViewModel。
我使用 ViewPager2添加了两个选项卡。
我的适配器如下所示:
选项卡正在工作。但是,我注意到我的 MergedItemsFragment 的 ViewModel 表现得很奇怪。在添加选项卡之前,我导航到 Fragment,如下所示:
当我离开那个片段NavHostFragment.findNavController(this).popBackStack()
并稍后返回那个片段时,我会得到一个新的空视图模型。这是故意的。
使用我正在导航的新方法return new MergedItemsFragment()
。当我离开该片段并稍后返回时,我得到一个包含旧数据的 ViewModel 。这是一个问题,因为旧数据不再相关,因为用户在另一个片段中选择了不同的数据。
更新#1
我意识到他实际上将所有旧片段都保存在内存中,因为相同的打印语句被多次调用。它被调用的次数随着我离开并返回该屏幕的次数而增加。因此,如果我离开并返回 10 次并旋转我的设备,他实际上将执行一行 10 次。任何猜测如何以与 ViewModel 一起使用的方式使用导航组件实现选项卡/视图页面?
更新#2
我这样设置我的 ViewModel:
我得到相同的结果:
我将 ViewModel 绑定在 Fragment 本身中。因此,this
是片段。
android - 如何使用 Viewpager2 和 Mediator 选项卡布局动态添加和删除片段页面
我需要根据服务器配置文件在运行时将片段添加到 viewpager2 以及选项卡。我见过的大多数 viewpager2 资源都展示了使用新 TabMediator 选项卡布局的静态 viewpager2。我正在跳过 viewpager,因为我需要添加 viewpager2 支持的 RTL 和垂直滚动。
我最关心的是如何在添加和删除片段时跟踪特定页面/片段的索引。以本教程和代码为例。
android - Android TabLayout + ViewPager2 更改选项卡而不加载其间的所有选项卡
在我的应用程序中,我有一个ViewPager2
和一个TabLayout
. 该应用程序由 4 个选项卡组成。第三个动态加载列表片段。
我在打开第 4 个选项卡时遇到问题,但前提是我之前没有打开第 3 个选项卡。例如,这将崩溃:
打开应用程序,显示第一个选项卡。单击第 4 个选项卡。=>应用程序将崩溃并出现以下错误:
但是,如果我按以下方式进行:
打开应用程序,显示第一个选项卡。单击第三个选项卡。单击第 4 个选项卡。=>应用程序不会崩溃。
看起来当我更改选项卡时,它会“扫过”当前选项卡和单击的选项卡之间的所有选项卡,从而导致片段开始初始化。
这是第三个片段的代码:
我的ListFragment:
这是我的ViewPagerAdapter的代码:
以及包含视图寻呼机的Activity :
有没有办法防止从 1 到 4 时加载选项卡 2+3,或者,如果没有,我该如何防止这个错误?
编辑/解决方法:
好的,所以我找到了解决此错误的方法。我现在没有使用 ViewPager2 和 TabLayout 的组合,而是使用 BottomNavigation 来获得完全相同的结果,但没有滑动效果。就我而言,它可以工作,因为我只需要 4 个选项卡,但是对于具有更多选项卡的更复杂的应用程序,它不起作用,所以如果有人知道如何修复它......
android - ViewPager2 禁用过渡动画
我有 ViewPager2 与 TabLayout 连接。其他引用 ViewPager 的帖子提供覆盖 setCurrentItem(position, false) ,其中 false 禁用平滑滚动。但是,TabLayoutMediator 调用 onTabSelected(TabLayout.Tab tab),后者调用 viewpager.setCurrentItem(postion, true)。如果 TabLayoutMediator 和 ViewPager2 是最终的,我该如何覆盖此行为?
已经尝试过:
并像这样覆盖 onTabSelected:
android - 带有包含recyclerview的片段的Android ViewPager2不滚动
我正在使用 ViewPager2 和 FragmentStateAdapter 来绑定片段。我的每个片段都有 3 个垂直布局的回收站视图。问题是我无法在片段内滚动回收器视图,而且当我尝试垂直滚动内容时,视图寻呼机会更改选项卡。如何解决这个问题?
android - 如何使 ViewPager2 看起来像一个带有“幻灯片”页面转换器的无限循环?
我正在寻找一个无限循环来在 ViewPager2 中显示图片。
在图片之间,最后一个和第一个项目之间,以及第一个和最后一个项目之间有一个“幻灯片”页面转换器(就像我认为的默认值)。
我发现的困难是:
- 没有
Integer.maxValue
物品, - 在第一个和最后一个元素之间有一个真正的过渡,而不是一个
setCurrentItem(x, false)
不好看的。
java - 动画(textView)在片段状态适配器中的片段之间滑动时不断取消
- 我正在 android studio (Java) 上开发一个应用程序
- 我创建了一个 tabLayout,它使用 viewPager2 + Fragment State Adapter 在两个片段之间滑动
- 在 fragment02 上,我为 textView 设置了动画。
- 当我在片段上滑动时,动画会循环播放,这是应该的。
- 但是,如果我从片段上滑下然后重新打开,动画将不再播放。
- 我真的需要动画继续。
欢迎任何建议,我提前谢谢你:)
请注意,我对此很陌生。