【问题标题】:Alternatives to android.widget.Gallery (not the Gallery app)android.widget.Gallery 的替代品(不是 Gallery 应用程序)
【发布时间】:2013-03-16 00:51:04
【问题描述】:

抱歉,如果以前有人问过这个问题,但我尝试用谷歌搜索该主题,但没有任何好的结果。基本上,我正在尝试寻找 Google 决定弃用的 Gallery 小部件的替代品。到目前为止,我有以下候选人:

  1. ViewPager。不幸的是(据我所知),您一次只能显示一个视图。我知道有人在这里发布了解决方法:https://gist.github.com/devunwired/8cbe094bb7a783e37ad1。但我对这种方法有疑问。在我的手机上,显示了三个图像(水平)。最左边和最右边是静态的,而中间的是可滚动的(就像 ViewPager 应该做的那样)。即当我滚动 ViewPager 时,最左边和最右边的图像不会滚动。所以我不得不拒绝这个解决方案。

  2. 网格视图。看起来不错,但似乎 GridView 被设计为可水平和垂直滚动。我只想要一行,然后水平滚动。据我所知,Gallery 的设计并未考虑到这一点。

  3. 水平滚动视图。 Google 在 Javadocs 中建议的另一个(除了 ViewPager)。似乎是一个很好的使用方法,但是......如果我理解正确,使用这种方法所有内容都将被预先实例化。没有延迟加载..

所以我在这里很困惑。似乎最好的解决方案是一次仅使用一个 View 的 ViewPager(不符合我的要求),或者坚持使用 Gallery。

人们怎么看??

提前致谢!

【问题讨论】:

标签: android gallery


【解决方案1】:

android.support.v4.view.ViewPager 是明确的答案。

您可以显示任意数量的页面 (Views),这完全取决于 PagerAdapter。它有一个方法.getPageWidth(position),每个页面都会调用它。例如,如果它返回 0.5,则页面将只有 ViewPager 宽度的一半。

不要坚持使用Gallery,因为它存在内存泄漏问题。

【讨论】:

  • 嗨。是的,我知道 getPageWidth 方法。不幸的是,它在左侧显示了当前视图,而不是在中间(我认为这很有误导性)。另外,我有一个 onPageChangeListener() 来显示当前页面的一些文本。如果所有视图都已显示,我似乎无法“激活”最后几个视图。例如,假设屏幕一次可以显示 5 个项目。当用户滚动到最后一页(例如,总共 28 个项目)时,最后一页将显示项目 26-28。但我无法将页面“更改”为第 27 和 28 项,因为它们已经显示。我希望这是有道理的
猜你喜欢
  • 1970-01-01
  • 2017-08-03
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多