作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个图片库,其中我在当前选中的图片周围放置了一个红色边框(当用户第一次打开屏幕时,第一个被选中,所以我在第一个 View 周围画了边框)。
当我点击另一个项目时,我想在新项目中绘制红色边框并删除上一个项目的红色边框。
问题是我无法更改图库的 onClick
事件内的边框。如果我改变它,什么也不会发生(我想是因为画廊的项目不会重绘)。我试图在我的画廊变量和它的每个 View 中调用 invalidate() 和 postInvalidate()
,但它不起作用! View 不会重绘(即,红色边框仅保留在画廊的第一项中)。
有人知道这里发生了什么吗?
最佳答案
在您的适配器代码中,保存一个 int
值,该值将成为所选 View
的位置。在 Gallery
的 onItemClicked
方法中,使用提供的位置更新 int
变量。然后,在 getView
方法中,如果正在绘制的位置是所选位置,则绘制边框。您可以继续使用 onItemClicked
中提供的 View
应用边框,或在适配器上调用 notifyDataSetChanged
。首选第一种方法,因为 notifyDataSetChanged
将重新创建每个可见的 View
。
通常,您还需要检查它是否不是所选位置,以便您可以从重用的View
中删除边框。但是,Gallery
总是会创建一个新的View
。 convertView
对于 Gallery
始终为 null。
关于Android - 如何强制画廊重绘其 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10441846/
我是一名优秀的程序员,十分优秀!