12

我需要在 Android 2.2 及更高版本上简单控制图标选择。
Gallery 对我来说是一个更好的解决方案,但它已被弃用,我必须使用HorizontalScrollViewandViewPager代替。
但是如何轻松迁移?在这种情况下如何使用这些类和控件?我试图找到这个主题的完整示例,但我找不到它。

4

2 回答 2

28

Dave Smith 的这个要点展示了一种使用方法ViewPager来获得与 a 非常相似的视觉结果Gallery

画廊风格的 ViewPager

引用我关于在 a 中一次显示多个页面的主题的博客文章ViewPager

他的容器 ( com.example.pagercontainer.PagerContainer) 包装了ViewPager并调用setClipChildren(false);自身,因此即使ViewPager聚焦在一个选定的页面上,其他坐标超出ViewPager边界的页面仍然可见,只要它们适合PagerContainer. 通过将 的大小设置ViewPager为小于PagerContainerViewPager可以将其页面调整为该大小,从而为其他页面留出空间。PagerContainer但是,需要在触摸事件方面提供一些帮助,因为ViewPager它只会在其自己的可见边界上处理滑动事件,而忽略任何侧面可见的页面。

您可能还想筛选这个 android-developers thread,有人在较新的 Android 版本上指出了这个问题。由于. _ViewPager

于 2012-09-02T22:49:51.970 回答
4

在 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中实现了这一点:

De Telegraaf Krant 中的电话示例平板电脑示例

于 2014-01-06T11:32:17.090 回答