【发布时间】:2016-10-28 16:56:43
【问题描述】:
我的问题非常复杂,我很难找到实现以下目标的解决方案:
我需要一种图例(步进器)布局,其中一个孩子由左栏组成,然后是一个圆圈,然后是一个右栏。严格来说像“-o-”这样的东西。所以一系列孩子看起来像这样:“-o-o-o-o-o”。当图例关注一个孩子时,表示当前孩子就是这个孩子,这个孩子有一个更大的圆圈和更长的条:“--O--”。
因此最终的渲染看起来像这样:“-o-o--O--o-o-”。
每个子项 ("-o-") 对应于数据库中的特定项。当孩子获得焦点(“--O--”)时,相关项目将显示在下方。当用户从右向左滑动时,会显示下一项,而从左向右滑动会显示上一项。
滑动时,为了显示哪个孩子将显示其对应的项目,例如孩子将被动画以显示它有焦点。我使用Animator 来:
- 增加条形宽度和孩子的圆圈大小 获得焦点
- 降低以前专注的孩子的这些值。
显示图例需要查看之前和之后的内容。
我相信使用ViewPager 将帮助我实现以下目标:
- 它具有“锚点效果”,这意味着滑动会从一个孩子移动到另一个孩子,以圆圈为中心:条之间的圆圈就是锚点。
- 我可以通过覆盖我的自定义
adapter的getPageWidth()方法在屏幕上显示多个页面
我想到的另一个解决方案是HorizontalScrollView。
如果我要使用它,根据滑动属性(强度、速度),图例将不确定地滚动而不锚定圆圈。
但是使用ViewPager 有一个很大的问题:每个页面都有相同的宽度。但是,图例的锚定子项需要更大(因此需要更大的宽度)。
那么如何动态改变宽度呢?
除非我可以自定义一个HorizontalScrollView以通过滑动拦截来添加锚点效果?
【问题讨论】:
标签: android android-fragments android-viewpager horizontalscrollview