如何在安卓中实现自定义堆栈视图?

13

我在网上搜索,但找不到好的解释或建议。 基本上,我想要实现这个功能:

enter image description here 在下滑时

enter image description here

enter image description here

我使用了StackView类,但我得到的只是这个"斜向"的堆栈:

enter image description here

我希望视图像上面的图片一样相互紧密叠放。

类似问题在这里提出->Android customize stackview,但我找不到令人满意的答案。

我已经阅读了StackView的代码,并按照建议尝试调整PERSPECTIVE_SHIFT_FACTOR_X或PERSPECTIVE_SHIFT_FACTOR_Y的值,但没有任何变化,我仍然得到同样的"斜向视图"。我是否漏掉了什么?

谢谢您提前的回答。


请考虑给这个功能请求点赞:https://issuetracker.google.com/issues/37076423 - Mark
2个回答

16

请随意使用我的库,可以在这里找到。

图片描述

它正好满足你的需求,并且基于 ViewPager,因此您可以使用自己选择的典型的 PagerAdapter 来使用它。


@blipinsk 我可以自定义你的库吗?我想让用户左右滑动视图来进行丢弃操作,实现类似 Tinder 的刷卡功能。 - Bharat Dodeja
你好 @BartoszLipinski,感谢你提供这个很棒的库。我有一个问题,是否有办法在初始化时进行垂直和水平翻转呢?谢谢。 - Rajnish Mishra
@Bartosz Lipinski,感谢您的库,看起来很棒!是否有一种方法可以实现自己的适配器,以便每个片段都包含不同的数据,例如具有不同名称的Editexts? - MorZa
1
@Mor 当然可以... 它只需要使用常规的 PagerAdapter。您可以使用例如 FragmentStatePagerAdapter 并重写 getItem 方法,以便在 ViewPager 中的特定位置返回不同的 Fragment - Bartek Lipinski
@BartekLipinski 谢谢!!!刚看到了。我正在测试它,如果有其他人在查看此内容,则作为普通的ViewPager,它具有可用的setCurrentItem方法。 - Roberto
显示剩余4条评论

8

您无法更改原始的PERSPECTIVE_SHIFT_FACTOR_X,因为它是私有字段。

StackView使用许多类,这些类具有包可见性,只能在android.widget包中使用。

此外,其中一些类已经预编译,源代码无处可寻,因此您不能只是将它们复制粘贴并从零开始创建自己的自定义StackView

您可以通过覆盖onLayout使视图以列形式显示,但一旦您对其进行动画处理,它们的位置会恢复到默认值。遗憾的是,StackView的视图动画是在私有方法中完成的,因此您无法对此做任何处理。

最好创建自己的类来实现此功能,并且可以引用StackView源代码中使用的代码。创建这样的类可能是很多工作,绝对不在一个问题的范围内。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接