我有一个自定义视图,由几个视图和标签组件组成。当用户触摸视图时,我会在视图周围绘制一个框架以指示选定状态,并且双击时背景会发生变化。通过向视图传递与背景不同的框架颜色并调用 view.invalidate(),使用视图的覆盖绘制函数绘制框架。背景变化也一样。
只要我为 API 7 开发,这曾经完美地工作。即使在运行 API 16 的手机上。我最近将代码迁移到 API 11+,现在选定的框架不再显示,背景也没有改变即使手机仍在模拟器中工作(API 14)。
一个下午试图追踪错误在哪里,我发现在我的手机上,调用 view.invalidate() 不会触发视图的重绘。我还尝试了 view.requestLayout() 和 view.postInvalidate() (只是为了确保),结果相同。将无效命令放在单独的线程中也不起作用。
总结一下:
Code API 7 - Phone API 16 - Emulator API 7 到 14 view.invalidate 工作
Code API 11 - Phone API 16 - Emulator API 11 到 14 view.invalidate 不适用于 Phone 但在模拟器上。
我有一个来自 Verizon 的摩托罗拉 RAZR M
这是一个已知的错误,还是在 API 11 中处理类似的事情发生了变化?
任何帮助表示赞赏。