Sid*_* Go 7 android scroll android-fragments android-viewpager android-nestedscrollview
精简版:
如何设置NestedScrollingChild的 NestedScrollingParent与这些孩子的倍数。
长版
我实现了一个,BottomSheetDialogFragment它的布局包含一个ViewPager,这个 viewpager 的适配器包含一个RecyclerView.
现在,问题是,由于NestedScrollingParent此时底片的协调器布局仅支持一个direct NestedScrollingChild,因此只能嵌套滚动适配器的第一个片段。
我的意思是,无论何时setAdapter在 viewpager 上调用,第一项都支持嵌套滚动。但是在我更改页面后,新页面现在不会滚动。然后当我回到上一页时,它仍然支持滚动。
另外,我注意到如果可以滚动的片段或页面被破坏,则后续页面现在可以滚动,这意味着后面的页面成为底部页面的滚动子页面。问题是现在获得滚动能力的页面不是当前项目而是前一个(我的适配器必须维护 3 个片段)。
概括:
后 setAdapter
在深入研究源代码后,我发现问题在于用于查找NestedScrollingChild底页的 的错误算法(Google 的人员没有考虑ViewPager底页内 a 的可能性)。
请参阅此处的方法:findScrollingChild()
此方法的作用是返回NestedScrollingChild在给定视图上遇到的第一个视图(在本例中为底页),在具有 3 个页面的视图分页器的情况下,即当前页面之前的页面。CoordinatorLayout此外,此方法会在底部表的包装器的子级的布局阶段触发。
考虑到这一点,我们可以设计出许多解决方案,包括对行为本身进行子类化。
另外,可以NestedScrollingChild通过添加和删除此类子项的一个实例(从旧页面中删除,然后添加到当前页面中)来限制 viewpager 的内部,这就是我所做的。您可以在setPrimaryItem适配器内部或在OnPageChangeListener. 请务必调用requestLayout底部表单的协调器布局。(此解决方案取决于寻呼机适配器的布局/结构类型,因此我不会发布我的确切解决方案)。
| 归档时间: |
|
| 查看次数: |
2501 次 |
| 最近记录: |