好!在过去的几个星期里,我一直在试图做到这一点,似乎找不到一个很好的解决方案,以达到我想要的目的.尝试使用HorizontalScrollView,Gallery(已弃用).
我现在正在研究RecycleView,因为我来了这个方法.smoothScrollToPosition(),并认为这可能会帮助我.
这是我想要完成的例证:
我也必须能够以编程方式创建相关层
任何人都可以指出这可以如何实现?有什么本地的方法吗?
编辑:进一步了解@CommonsWare关于查看ViewPager和commonsware.com/blog/2012/08/20/ Dave Smith的第三篇文章的建议我认为这是要走的路. Havent模式对我的使用,但它看起来不错.
我正在使用他的Github:https://gist.github.com/devunwired/8cbe094bb7a783e37ad1的Dave Smiths样本
解决方法
不要使用这种方法,它会使用很多内存(如果在某些时候你需要扩展到一个更通用的解决方案),因为你将不得不在内存中保持高数量的ViewPager Pages(Fragment).我有同样的挑战,我已经用
HorizontalListView完成了这个.
所以你需要创建一个适配器,它将添加“stubs”视图,以便获得第一个或最后一个(可以更多地取决于同一时间的所需可见视图),因为这是一个ListView.
对于捕捉效果,您可以使用这样的东西(所有项目需要具有相等的尺寸):
View.OnTouchListener hListViewsOnTouchListener = new View.OnTouchListener() { @Override public boolean onTouch(View v,MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP && v instanceof HListView) { View c = ((HListView) v).getChildAt(0); int posToGo = Math.abs(c.getX()) < c.getWidth() / 2 ? ((HListView) v).getFirstVisiblePosition() : ((HListView) v).getFirstVisiblePosition() + 1; ((HListView) v).smoothScrollToPositionFromLeft(posToGo,0); } return false; } };
这种方法不仅使用较少的内存,而且对于子视图的数量是通用的,它更流畅,所有元素都是可点击的(不仅是中心的)…它是一个ListView