0

我正在尝试将基于Marc Reichelt工作的 RealViewSwitcher 转换为使用 ListAdapter 备份的一个。一个水平可滚动的 ViewGroup,包含多个视图,一次可见一个。

我当前的解决方案一次最多向 ViewGroup 添加 3 个视图。一个(中间)可见,两个缓冲视图,每侧一个。当用户滚动时,比如说向右滚动,最左边的 View 会被移除,而新的 View 会被添加到右边。为了让 ViewGroup 可以左右滚动,我需要始终关注中间的 View。因此,当切换视图时,我会正确排列视图并将焦点设置在中间的视图上。这种方法的问题是在排列视图时会出现闪烁效果。让我用我画的一张图来说明这个问题: 问题场景

A、B 和 C 是我的 ViewGroup 中的三个不同视图(支持 ViewGroup 的 ListAdapter 包含更多元素,但一次只加载三个)。较大的矩形表示此时焦点所在的位置。我向左滚动并在 (3) 处捕捉到最左侧视图的目的地。然后我重新排列视图。即在左侧添加一个新视图 X,并在右侧删除视图 C,将 A 放在中间。最后,我以中间的视图 (A) 为中心,这是我从一开始就滚动到的视图。

因此,当我最后一次重新排列视图并以 A 为中心时,之前位于中间的视图(在本例中为 B)的内容会闪烁几毫秒,从而导致不需要的闪烁效果. 关于我如何解决这个问题的任何想法?

4

1 回答 1

0

问题解决了。该问题似乎与更改ViewGroup中的子项然后调用scrollTo方法有关。如果我改为使用Scroller移动到正确的视图/子视图,闪烁问题就会消失。

于 2011-04-27T05:58:15.623 回答