【发布时间】:2012-03-17 00:07:18
【问题描述】:
我创建了一个具有动态添加 ImageViews 的 LinearLayout。我可以有一个包含 50 个 ImageViews 的列表,但同时只会显示 3 个。
我需要引用其中的 3 个项目,因此我在名为 ImageView item1、item2、item3 的活动顶部设置了私有变量。
当一个按钮被按下时,列表中的下一个 ImageView 被添加到布局中并且第一个项目被移除。然后我重置了 item1、item2 和 item3 的引用。
我的问题是,虽然效果很好,但似乎存在绘画问题。 item3(最后一个 ImageView)将显示在前一个 ImageView 之上添加的新项目。这似乎是一个绘画问题,因为如果我将手机切换到横向模式,然后再回到纵向,问题就解决了。
编辑:我尝试将 .invalidate() 添加到布局和 imageViews 本身,但没有成功。
【问题讨论】:
-
粘贴相关代码和截图
-
为您的视图尝试
invalidate()方法,并通过将其可见性设置为View.GONE(如果它不为空)来确保您已删除的视图不再可见。 -
而不是删除和替换视图。为什么不直接回收它们?意思不是移动实际视图,而是交换它们的内容。就像您在 ArrayAdapter 中所做的一样
-
你是按这个顺序做的吧?添加新的,删除旧的,使布局无效。试试这个顺序。
-
@slayton 这是正确的解决方案,非常感谢。
标签: android