我需要在 Android 2.2 及更高版本上简单控制图标选择。
Gallery 对我来说是一个更好的解决方案,但它已被弃用,我必须使用HorizontalScrollView
andViewPager
代替。
但是如何轻松迁移?在这种情况下如何使用这些类和控件?我试图找到这个主题的完整示例,但我找不到它。
2 回答
Dave Smith 的这个要点展示了一种使用方法ViewPager
来获得与 a 非常相似的视觉结果Gallery
:
引用我关于在 a 中一次显示多个页面的主题的博客文章ViewPager
:
他的容器 (
com.example.pagercontainer.PagerContainer
) 包装了ViewPager
并调用setClipChildren(false);
自身,因此即使ViewPager
聚焦在一个选定的页面上,其他坐标超出ViewPager
边界的页面仍然可见,只要它们适合PagerContainer
. 通过将 的大小设置ViewPager
为小于PagerContainer
,ViewPager
可以将其页面调整为该大小,从而为其他页面留出空间。PagerContainer
但是,需要在触摸事件方面提供一些帮助,因为ViewPager
它只会在其自己的可见边界上处理滑动事件,而忽略任何侧面可见的页面。
您可能还想筛选这个 android-developers thread,有人在较新的 Android 版本上指出了这个问题。由于. _ViewPager
在 CommonsWare 的链接解决方法中,触摸处理和硬件加速存在各种问题。在我看来,一个更简单、更优雅的解决方案是为 ViewPager 指定一个负边距:
ViewPager.setPageMargin(
getResources().getDimensionPixelOffset(R.dimen.viewpager_margin));
然后我在我的dimens.xml
:
<dimen name="viewpager_margin">-64dp</dimen>
为了补偿重叠页面,每个页面的内容视图都有相反的边距:
android:layout_marginLeft="@dimen/viewpager_margin_fix"
android:layout_marginRight="@dimen/viewpager_margin_fix"
再次在dimens.xml
:
<dimen name="viewpager_margin_fix">32dp</dimen>
(请注意,viewpager_margin_fix
尺寸是绝对viewpager_margin
尺寸的一半。)
我们在荷兰报纸应用程序De Telegraaf Krant中实现了这一点: